我正在尝试编写一个函数,该函数使用带有array.shift()+ array.pop()的forEach连续将数组的第一个元素和最后一个元素相加。
问题在于for循环不会完成最里面的数字,因此数组始终在其中保留2个值。
码:
function choreAssignment(chores) {
chores.sort(function(a, b) {return a - b});
var assignment = [];
chores.forEach(function() {
assignment.push((chores.pop() + chores.shift()));
});
return assignment.sort(function(a, b) {return a - b});
}
上面的代码按预期工作,但是将最里面的两个值保留在
chores
数组内。例如,如果我运行:
码:
var arr = [1, 4, 7, 2, 5, 9, 4, 3];
choreAssignment(arr);
我得到:
[8, 9, 10]
即,它添加了9&1,7&2,5&3,但它在数组内部保留了[4,4]。
我不确定为什么会这样。谢谢。
最佳答案
尝试将forEach更改为:
while (chores.length) {
assignment.push((chores.pop() + chores.shift()));
}
请注意,这假定数组中始终有偶数个元素
关于javascript - 迭代地将数组中的第一个和最后一个数字相加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41335583/