繁体   English   中英

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

[英]Using conditional map function to transform array

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

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

我将使用reduce来使用累加器来跟踪先前的数组值:

 const result = [];
 array.reduce((a, b) => (result.push(a + b), b));
 result.push(array.pop()); // add the trailing 11

使用Array.map()对其进行迭代。 合并当前项和下一项(如果未定义,则为0):

 const numbers= [1,3,5,10,11] const result = numbers.map((n, i) => n + (numbers[i + 1] || 0)); console.log(result); 

结果的运算= [1 + 3、3 + 5、5 + 10、10 + 11、11]。 结果的最后一个索引与numbers数组相同,因为此后没有索引。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM