Lodash _.mapValuesをES6に変換するさまざまな方法は何ですか?.
コード:
var fruits= {
'Apple': { 'name': 'Apple', 'number': 5},
'orange': { 'name': 'orange', 'number': 10 }
};
_.mapValues(fruits, 'number');
出力:
{ 'Apple': 5, 'orange': 10 }
reduce
オブジェクトのentries
を別のオブジェクトに変換し、値からnumber
のみを抽出します。
var fruits= {
'Apple': { 'name': 'Apple', 'number': 5},
'orange': { 'name': 'orange', 'number': 10 }
};
console.log(Object.entries(fruits)
.reduce((a, [key, { number }]) => {
a[key] = number;
return a;
}, {}
));
for..in
ループを使用して、古いオブジェクトから新しいオブジェクトにキーと値を追加できます
var fruits = {
'Apple': {
'name': 'Apple',
'number': 5
},
'orange': {
'name': 'orange',
'number': 10
}
};
let newObj = {};
for (let keys in fruits) {
newObj[keys] = fruits[keys].number;
}
console.log(newObj)
Array.reduce 、 Object.entries および Object.assign を使用します
var fruits= {'Apple': { 'name': 'Apple', 'number': 5},'orange': { 'name': 'orange', 'number': 10 }};
let result = Object.entries(fruits).reduce((a,[k,{number}]) => Object.assign(a, {[k]:number}), {});
console.log(result);
Object.keys()
および reduce()
を使用して必要な結果を取得することもできます。
[〜#〜]デモ[〜#〜]
var fruits= {
'Apple': { 'name': 'Apple', 'number': 5},
'orange': { 'name': 'orange', 'number': 10 }
};
let result = Object.keys(fruits).reduce((r,v)=>Object.assign(r,{[v]:fruits[v].number}),{});
console.log(result);
.as-console-wrapper {max-height: 100% !important;top: 0;}
以下は、他の回答の小さなフォローアップです。これにより、レデューサーはアキュムレーターオブジェクトを変更しません。
const newObject = Object.entries(fruits)
.reduce((acc, [fruitKey, { number }]) => ({
...acc,
[fruitKey]: number,
}), {}
));
スプレッドの使用...acc
構文は、reduceメソッドのためのより機能的なプログラミングスタイルのアプローチです。