我正在嘗試編寫一個函數,該函數使用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。 –