让我总结一下可能性。目标始终是从对象中创建一个数组。为此有各种 Javascript 对象函数。对于每个单独的函数,都有不同的解释方式。所以它总是取决于我们的对象是什么样子以及我们想要做什么。
在上面的示例中,它是一个包含三个对象的对象。
const obj = {
a: {value: 1},
b: {value: 2},
c: {value:3}
};
使用 Object.keys
Object.keys 只给我们对象的键。
const arr = Object.keys(obj);
// output arr:
[a, b, c]
const result = arr.reduce((total, key) => {
return sum + obj[key].value;
}, 0);
// output result
// 6
使用 Object.value
Object.value() 返回数组中的每一个值。
const arr = Object.value(obj);
// output arr
[
{value: 1},
{value: 2},
{value: 3},
]
const result = arr.reduce((total, singleValue) => {
return total + singleValue.value;
}, 0);
// output result
// 6
// Or the short variant
const resultShort = Object.values(obj).reduce((t, n) => t + n.value, 0)
// output resultShort
// 6
使用 Object.entries
Object.entries 将每个单独的对象值拆分为一个数组。
const arr = Object.entries(obj)
// output arr
[
["a", {visitors: 1}],
["b", {visitors: 2}],
["c", {visitors: 4}]
]
const result = arr.reduce((total, singleArr) => {
return total + singleArr[1].value;
}, 0);
// output result
// 6
是使用 reduce 还是使用数组函数 map() 取决于您和您想要做什么。