我正在尝试编写一个函数,该函数使用带有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/

10-09 14:26