使用条件映射函数变换数组

时间:2018-12-22 14:10:45

标签: javascript ecmascript-6

我有一个数字数组,我想映射到一个新的数字数组中。

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语句来确定每个值。

3 个答案:

答案 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);