使用reduce (javascript)在数组中添加数字对
Adding pairs of numbers in array with reduce (javascript)
给定一个2D数组,我想将前一个内部数组的最后一个数字与下一个内部数组的第一个数字相加。
我设法达到了这样的地步:
var output= [[1,2,3],[4,5,6],[7,8,9],[1,2,3]] //this becomes...
output = [3,4,6,7,9,1] (edited typo)
我现在想要将这些对相加以返回这个数组:
output = [9, 11, 10]
到目前为止,这是我所拥有的,它返回[3,6,4,7,9,1]。我想看看如何使用reduce来实现这一点,但也对for循环如何完成同样的事情感兴趣。
var output= [[1,2,3],[4,5,6],[7,8,9],[1,2,3]]
output = output
.reduce((newArr,currArr)=>{
newArr.push(currArr[0],currArr[currArr.length-1]) //[1,3,4,6,7,9]
return newArr
},[])
output.shift()
output.pop()
return output
可以使用reduce
的索引参数let output= [[1,2,3],[4,5,6],[7,8,9],[1,2,3]];
output = output
.reduce((newArr, currArr, i, origArr) => {
if (i > 0) {
let prevArr = origArr[i - 1];
newArr.push(currArr[0] + prevArr[prevArr.length - 1]);
}
return newArr
}, [])
console.log(output)
不清楚输入数组的最后一个元素应该发生什么?您可以使用for..of
循环,Array.prototype.entries()
对数组的特定索引值求和。
let output = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3]
];
let res = Array.from({
length: output.length - 1
});
for (let [key, value] of output.entries()) {
if (key < output.length - 1)
res[key] = value[value.length - 1] + output[key + 1][0]
}
console.log(res)
您可以这样做,使用reduce.
var input = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3]
];
let output = [];
input.reduce((prevArr, currentArray) => {
if (prevArr) {
output.push(prevArr[prevArr.length - 1] + currentArray[0]);
}
return currentArray;
});
console.log(output);
相关文章:
- 我可以使用JavaScript闭包添加数字吗
- 如何在JavaScript中向选定的类中递增添加数字
- HTML 按钮在 Javascript 的文本字段中添加数字
- 如何从动态输入字段添加数字
- 在 Javascript 中添加数字时遇到麻烦
- 使用 JavaScript 在数组中添加数字
- 在 for loop JavaScript 中添加数字
- 使用jQuery单击按钮时添加数字
- 嵌套循环以添加数字
- JQuery 添加数字值
- 使 $.getScript(“”) 不要在请求末尾添加数字
- 使用递归性javascript从数字中添加数字
- javascript:循环添加数字
- 以字符串形式添加数字的Javascript
- 如何通过输入自动添加数字
- 如何在javascript中字符串的第一个字符之前添加数字
- 简单添加数字的位数平方
- 如何使用javascript为onclickurl添加数字
- 向复选框属性添加数字并限制选中复选框的数量
- 3种类型的按钮,使它们添加数字