2017-02-24 12 views
0

私は次の配列がある場合:コンバート配列 - lodash

[ 
    { 
    0:{ 
     id:5, 
     name:'xxx' 
     } 
    }, 
    { 
    1:{ 
     id:6, 
     name:'yyy' 
     } 
    } 
] 

を、私はLodashとその実装方法を

['xxx', 'yyy'] 

に変換する必要がありますか?

答えて

1

はここlodashのflatMapDeepの使用は名前を摘採前の値を抽出することができソリューションです。例えば、あなたがこれを行うことがキーと値のペアとしてIDと名前を返すために:

let result = _(data) 
    .flatMapDeep(_.values) 
    .map(item => ({[item.id]: item.name})) 
    .value() 
+0

今働いて、おかげで、私は新しい配列を取得するためにNEDDが、キーを持つ場合 - 値の組み合わせ? [{5、 'xxx'}、{6、 'yyy'}]のように?それを実装する方法は? – devMan

+0

商品ごとに異なる値が返されるスニペットを追加しました。 –

1

んLodashに、多分:

var arr = []; 

x.forEach(function(item, index) { 
    arr.push(item[index].name) 
}); 
console.log(arr) 

この仮定オブジェクトキーは、あなたがLodashのmapメソッドを使用することができ、増加し続ける0、1、2 .... nは

2

var data = [ 
 
    { 
 
    0:{ 
 
     id:5, 
 
     name:'xxx' 
 
     } 
 
    }, 
 
    { 
 
    1:{ 
 
     id:6, 
 
     name:'yyy' 
 
     } 
 
    } 
 
]; 
 

 
var arr = _.map(data, function(element, idx) { 
 
    return element[idx].name; 
 
}); 
 

 
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

yBrodskyが指摘したように、これはオブジェクトのキーが1ずつ増加し続ける前提。編集は、項目ごとに異なる値を返すようにマップを変更し

let data = [ 
    { 
    0:{ 
     id:5, 
     name:'xxx' 
     } 
    }, 
    { 
    1:{ 
     id:6, 
     name:'yyy' 
     } 
    } 
] 

let result = _(data) 
    .flatMapDeep(_.values) 
    .map('name') 
    .value()