像这样获取一个数字数组,并用每个数字创建一个新数组,前一个数字的总和可以这样完成:
let numbers = [1, 2, 3, 4]
let total = 0
numbers.map(v => total += v)
// result
// [1, 3, 6, 10]
如果数组包含具有键/值对的对象,是否可以使用相同的方法,或者我是否必须使用不同的方法?
var numbers = [{ val1: 1, val2: 2, val3: 3, val4: 4 }]
结果将是相同的键与值相加。
var numbers = [{ val1: 1, val2: 3, val3: 6, val4: 10 }]
编辑:所有这些答案都在 fiddle 中起作用,但在我的代码中唯一起作用的是
numbers.map(o => Object.assign(...Object.entries(o).map((s => ([k, v]) => ({ [k]: s += v}))(0))));
最佳答案
用 Array.map()
迭代数组.使用 Object.entries()
要从对象中获取键/值对,请使用 Array.reduce()
迭代这些对, 并以 total
为值重建对象。
注意:迭代顺序可能会根据 traversal order of object properties in ES6 而改变.
const numbers = [{ val1: 1, val2: 2, val3: 3, val4: 4 }]
let total = 0
const result = numbers.map(n => Object.entries(n)
.reduce((r, [k, v]) => {
total += v;
r[k] = total;
return r;
}, {}));
console.log(result);
关于javascript - 当涉及键值对时,你可以使用 Javascript Array Map 或 Reduce 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162263/