我有一个数字数组,我想映射到一个新的数字数组中。
let numbers= [1,3,5,10,11]
需要变成
var result = [4,8,15,21,11];
我尝试使用ES6速记语法来做到这一点。但是数字之间并没有真正的连贯性,所以尽管回调会更好
let numbers= [1,3,5,10,11]
const result = numbers.map(x => resultBinding(x))
function resultBinding(x){
}
现在我的问题是我不想尝试避免做出很多if语句来确定每个值。
答案 0 :(得分:3)
我将使用1
2
使用累加器来跟踪先前的数组值:
reduce
答案 1 :(得分:2)
使用Array.map()
进行迭代。合并当前项和下一项(如果未定义则合并为0):
const numbers= [1,3,5,10,11]
const result = numbers.map((n, i) => n + (numbers[i + 1] || 0));
console.log(result);
答案 2 :(得分:2)
结果的运算= [1 + 3、3 + 5、5 + 10、10 + 11、11]。结果的最后一个索引与数字数组相同,因为在此之后没有索引。
let numbers= [1,3,5,10,11];
let result = numbers.map((num, index)=> (index+1) >= numbers.length ? num : num + numbers[index+1])
console.log(result);