2017-04-18 9 views
0

私はオブジェクトの "ID"プロパティとcontentBlock配列と一致するユニークな要素uniqueIDの配列を持っています。これまでのコードでは、uniqueIDおよびcontentBlock配列をループし、uniqueIDの要素値がcontentBlockのID値と等しい場合にコードを検索します。オブジェクトをループして特定のプロパティを印刷しますか?

uniqueIDがID値と等しい場合はオブジェクトのプロパティtitle、age、およびstate(NOT ID)を返しますが、下のforEachループでこれらの複数のプロパティをどのように出力するかは不明です。これについて私を導く?

var uniqueID = ["a", "c"]; 

var contentBlock = [ 
    { 
    title: "John", 
    age: 24, 
    state: "NY", 
    ID: "a" 
}, 
{ 
    title: "Jane", 
    age: 27, 
    state: "CA", 
    ID: "b" 
}, 
{ 
    title: "Joe", 
    age: 32, 
    state: "NY", 
    ID: "c" 
}, 
{ 
    title: "Carl", 
    age: 43, 
    state: "MI", 
    ID: "d" 
} 
] 


uniqueID.forEach(function (item) { 
    contentBlock.forEach(function(tile) { 
    if (item === tile.ID) { 
//return these properties of each object identified as unique 
     console.log(tile.title); 
     console.log(tile.age) 
     console.log(tile.state) 
    } 
    }) 
}) 

答えて

0

代わりにArray#filterを使用することをおすすめします。

var contentBlock = [{title:"John",age:24,state:"NY",ID:"a"},{title:"Jane",age:27,state:"CA",ID:"b"},{title:"Joe",age:32,state:"NY",ID:"c"},{title:"Carl",age:43,state:"MI",ID:"d"}], uniqueID = ["a", "c"], 
 
    hash = contentBlock.filter(v => uniqueID.indexOf(v.ID) > -1), 
 
    res = hash.map(v => Object.assign({}, {title: v.title, age: v.age, state: v.state})); 
 
    
 
    console.log(res);

+0

underscore.jsからこの使用_.filterを書くための代替方法はありますか?私はJSを誘惑するのが初めてだから、どうやったらいいかわからない。 – Tyler

+0

@Tylerアンダースコアフィルタはかなり似ていますが、何がポイントです。純粋なjsを使用してください。 –

関連する問題