2013-10-31 19 views
0

我已經完成了一百萬次我的代碼,但無法找出問題所在。我做了一個代碼,它將返回數組中所有可能的數字總和。當數組中有3個數字時它工作正常,但如果我向數組中添加另一個數字,它將取代幾個與NaN相加的數字。 例:返回數組數組的所有可能和數

陣列= [4,6,3,7]的返回:

[20,16,10,13,9,14,11,7,17,NaN時,13] 和NaN的應該是「10」

array = [4, 6, 3, 7]; 
newarray = [0]; 
for (i = 0; i < array.length; i++) { 
    newarray[0] += array[i]; 
} 
x = 0; 
y = 1; 
for (i = 0; i < array.length; i++) { 
    newarray.push((newarray[0]-array[i])); 
    if (i !== 0) { 
     y = y+array.length; 
    } 
    x = i; 
    while (x < array.length) { 
     if (x != i) { 
      newarray.push((newarray[y]-array[x])); 
     } 
     x++; 
    } 
} 
console.log(newarray);` 

,我有些插槽其中數字是應該得到楠的事實讓我相信有一個在while循環變量x的一個問題,但我的大腦正在討論實際存在的問題。 http://jsfiddle.net/nsjY6/

回答

1

newarray [Y]這裏引起的NaN

newarray.push((newarray[y - 1]-array[x])); 

[20,16,14,17,13,14,10,6,17,10,13]

添加我的版本

var array = [4, 6, 3, 7]; 

var newarray = []; 

for (i=0; i< Math.pow(2, array.length); i++) { 

    var s = i.toString(2) 
    var t = 0; 
    for (c in s) t += s[c] * array[c]; 

    newarray.push(t); 
} 

console.log(newarray); 
+0

這實際上整個輸出改變不正確的輸出但這給我的東西來看待,並從那裏我也許能夠弄清楚到底是什麼模式我需要的地方強制的設定t y。 –

+0

如果你用0而不是1初始化y,它也是一樣的。 – Abhitalks

+0

你的反應雖然不正確,但卻導致我找出問題出在哪裏。非常感謝你。 –