2016-07-03 13 views
0

のキーにプロパティでオブジェクトの配列を比較すべての一致した値をUIに表示する配列inorderにwcObjectのをプッシュします。キーが一致しない場合は、のname.descプロパティのdata.examples配列オブジェクトの値をでプッシュし、を削除します。は末尾にのテキストが含まれていません。キーマッチが私がしたい場合は、私は、<strong>data.examples</strong>配列オブジェクトに<strong>wcObject.notCoveredList</strong>キーと<strong>Name.valueに</strong>プロパティ<strong>値</strong>を比較する別のオブジェクト

data = { 
     examples : [ 
      { 
      name: { 
       value:"someOne", 
       desc: "some random word not covered" 
      }, 
      type: { 
       value:"General", 
       desc:"General" 
      } 
      }, { 
      name: { 
       value:"secondOne", 
       desc: "second on in the queue not covered" 
      }, 
      type: { 
       value:"General", 
       desc:"General" 
      } 
      }, { 
      name: { 
       value:"thirdOne", 
       desc: "third one from the last not covered" 
      }, 
      type: { 
       value:"General", 
       desc:"General" 
      } 
      } 
     ] 

     } 

wcObject = { 
    notCoveredList : [ 
     { someOne: "anyone can start " }, 
     { secondOne: "second One cannot start" }, 
     { thirdOne: "third One can be allowed" } 
    ] 
    } 
+0

となります。 WCObjectのnotCoveredListやdataの中にexemplesを入れ子にすることにも関心がありません。あなたはこれを変更する必要があります –

+0

あなたが求めていることは意味をなさないと思います。すべての例について:name.valueがwcObject.notCoveredList内のオブジェクトのキーと一致する場合は、それを出力配列にプッシュしてください。キーと一致しない場合は、例のname.descの最後から 'カバーされていない'部分を切り取り、代わりに 'を押します。これが理にかなっていないのは、終わりから「覆われていない」部分を切り取ると、本質的に何が終わるのかは、name.valueと同じようにプッシュすることです。name.value === name.desc +カバーされていません'。 –

+0

申し訳ありません@kyle Baker、それを修正させてください。 name.descの値は、最後には適用されないテキストであればどれでもかまいません。 – sridev9

答えて

0

ので、このコード:

  1. は、フィルタオブジェクトを構築します。 wcObject.notCoveredListのすべてのキーを取得し、単一のオブジェクト( は未定義の値)でキーを作成するので、必要なときに配列を反復する代わりに hasOwnProperty()呼び出しでこれらのキーを検索できますフィルタリングする。
  2. data.examplesアレイのすべてのメンバーを、それ自身のname.descのプロパティまたは[適用対象外の[除外]] name.valueプロパティにマップします。

wcNotCoveredKeys = wcObject.notCoveredList.reduce((memo, item) => { 
    // value is empty for all, we only care about keys. 
    memo[Object.keys(item)[0]] = undefined; 
    return memo; 
}, {}) 

// having built up our lookup table of those not covered, we continue: 
forUI = data.examples.map(example => { 
    if (wcNotCoveredKeys.hasOwnProperty(example.name.value)) { 
    return example.name.value; 
    } 
    else { 
    notCoveredString = example.name.desc; 
    cutOutIndex = notCoveredString.indexOf(' not covered'); 
    return notCoveredString.slice(0, cutOutIndex) 
    } 
}); 

(文字列のスライスを統合するために更新)

だけ明確にする:あなたはwcObject.notCoveredListから2番目の項目を削除した場合、その後、あなたがforUIで取得したいの出力は、(/例のデータ構造を与えられました値は

["someOne", "second on in the queue", "thirdOne"]

関連する問題

 関連する問題