2017-06-28 15 views
0

オブジェクトの配列をループし、各オブジェクトのidがキーと値のペアのオブジェクトに含まれているかどうかを確認しています。 idがキー値のペアに含まれている場合は、その値を新しいオブジェクトプロパティとして割り当てています。Lodash:オブジェクトの配列をループしてキー/値と比較する

var arrayOfObjects = [ 
    { 
    id: 1, 
    name: "bob" 
    }, 
{ 
    id: 2, 
    name: "sue" 
    } 
]; 

そして私はまた、キーと値のペアのオブジェクトを持っています:

それでは、私は、オブジェクトの配列を持っているとしましょう、私は私のarrayOfObjectsをループにしたい

var keyValuePairs = { 1: "admin", 2: "user" } 

、およびかどうかを確認idは私のkeyValuePairsにあります。もしそうなら、私はそれはこのように見えるように私のarrayOfObjectsに新しいプロパティを追加したい:

var arrayOfObjects = [ 
    { 
    id: 1, 
    name: "bob", 
    title: "admin" 
    }, 
{ 
    id: 2, 
    name: "sue", 
    title: "user" 
    } 
]; 

私はこれを試してみたが、それは私のarrayOfObjectsに「タイトル」プロパティを追加されていません。どのように私はロダッシュを使用してこれを行うことができますか?

return _.map(arrayOfObjects, function(obj) { 
    if(obj.id in keyValuePairs) 
    { 
    obj.title = keyValuePairs[obj.id]; 
    } 
    return obj; 
}); 

答えて

0

あなたは、その簡単lodashせずまたはlodash同等でできるArray#mapと配列を反復することにより、その値がkeyValuePairsに存在する場合、オブジェクトを割り当て、新しいオブジェクトにタイトル:

var arrayOfObjects = [{"id":1,"name":"bob"},{"id":2,"name":"sue"},{"id":3,"name":"dave"}]; 
 

 
var keyValuePairs = { 1: "admin", 2: "user" } 
 

 
var result = arrayOfObjects.map(function(o) { 
 
    return keyValuePairs[o.id] ? Object.assign({}, o, { title: keyValuePairs[o.id] }) : o; 
 
}); 
 

 
console.log(result);

関連する問題