我正在尝试编写一个函数,该函数使用forEach和array.shift()+ array.pop()连续添加数组的第一个和最后一个元素。迭代地在数组中添加第一个和最后一个数字
问题是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]。
我不知道这是为什么。谢谢。
你举的例子和说明似乎并不匹配。我希望对于样本输入“[1,4,7,2,5,9,4,3]”,输出是'[4,8,16,7]'。 – pzp
它首先将杂事算法从最小值排序到最大值。所以在它使用> shift()和pop()之前,值被列为[1,2,3,4,4,5,7,9],所以它们加在一起9 + 1,7 + 2和5 + 3 ,但由于某种原因,不是4 + 4。 –