以下は私のコードです。各項目のサイズを2ずつ小さくして、配列の特定の値が0
または-1
になると、undefined
に置き換えます。while JavaScriptは永遠にJavaScriptで動作します
例 -
入力から[5,4,4,2,2,8]
出力 -
Array Non Blank Values
5 4 4 2 2 8 6
3 2 2 _ _ 6 4
1 _ _ _ _ 4 2
_ _ _ _ _ 3 1
_ _ _ _ _ _ DONE
コード(どういうわけかその無限ループと行く) -
var arr = [5,4,4,2,2,8]; // 6 4 2 1
var num = 0;
itemNum = countItemNotUndefined(arr);
function makeItemUndefine(arr) {
return arr.map(function(x){
x = x - 2;
return x ==0 || x == -1 ? undefined : x;
})
}
function countItemNotUndefined(arr) {
var itemLength = 0;
arr.map(function(x){
if(x !== undefined)
itemLength++;
})
return itemLength;
}
while(itemNum != 0) {
num ++;
var result = makeItemUndefine(arr);
itemNum = countItemNotUndefined(result);
}
console.log("Number is ", num);
私がここで間違っていることを教えてください。
なぜそれは永遠に実行されませんか? 'itemNum'は決して変更されません – vsync
@vsync' itemItemNum'を 'countItemNotUndefined(arr)'に渡すことによって 'itemNum'を' 0'に減らそうとしています –
結果が使用されるのではなくループするたびに元の配列にリセットされるようです前のループから変更された配列 – Clint