為什么這段代碼給我 NaN 作為輸出???
var rob = function(nums) {
var a = 0;
var b = 0;
for (let i = 0; i < nums.length; i ) {
a = nums[i] nums[i 2]
b = nums[i 1] nums[i 2]
}
return a
};
console.log(rob([1, 2, 3, 1]));
uj5u.com熱心網友回復:
您遍歷陣列nums,然后嘗試訪問其最后一個元素之外的成員。
什么時候,指的是不存在的元素, 產生i,當你添加一個數字到, 你得到.3nums[i 2]undefinedundefinedNaN
uj5u.com熱心網友回復:
陣列中有四個專案[1, 2, 3, 1]。問題是i 2。
在回圈的第三次迭代中,您試圖訪問一個不存在的索引:nums[i 2]在第三次迭代中變為nums[2 2],變為nums[4]. 但是nums[3]是最后一項,因為陣列長度只有4
uj5u.com熱心網友回復:
時i,陣列的索引nums越界nums[i]是undefined。當您將 any 添加undefined到任何數字或NaN結果為NaN.
您可以使用nums[i 2] || 0andnums[i 1] || 0來避免處理undefined. 如果您的目標是將所有元素與偶數索引 0,2 ... 相加,并將結果放入 中a,則更好的方法可能如下。對于更大的陣列,您可能會多次向結果中添加一些元素。
但是,如果這是您的目標,那么您可以保留nums[ 2] || 0和nums[i 1] || 0.
const rob = function(nums) {
let a = 0;
let b = 0;
for (let i = 0; i < nums.length; i = i 2) {
a = nums[i];
b = nums[i 1] || 0;
}
return a;
};
console.log(rob([1, 2, 3, 1]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488773.html
標籤:javascript 数组
