2014-01-19 109 views
0

完全失去效果。如何以正確的方式書寫?從陣列中移除負值並按升序排列正值

var i = [1, -2, 3, -4, 5, 7, -6]; 
for (i = 0, i < 7, i++) { 
    if (i[0] >= 0 && i[0] <= i[1]) { 
     continue; 
    } else { 
     i[0] = i[1]; 
     break; 
    } else { 
     if (i[i]) < 0) i.splice(i, 1); 
    } 
} 

document.write("array[i]"); 
+0

爲什麼你不希望使用本地'中的Array.sort()'方法? – Blackhole

+0

任何可以解決問題的方法。斯特凡諾和其他人編輯了我的問題很好,但有人刪除了我的感謝句子。我更願意留下來回答我的問題!:-) –

回答

1
i.filter(function (el) {return el >= 0;}); 
i.sort(function (a, b) {return a - b;}); 
+0

我很抱歉,不太明白。 –

+0

用var i = [...]定義數組後,可以運行這兩行代碼。第一個消除了所有的負面情況,第二個消除了剩下的情況。 – MikeHelland

0

如果你第一次排序的陣列,所有的負項在數組的開頭,所以你可以通過他們循環找到的第一個保留,並採取的部分從該點陣列:

i.sort(function(x, y) { return x - y; }); 
var index = 0; 
while (index < i.length && i[index] < 0) index++; 
i = i.slice(index); 

document.write(i); 
+0

+0

我只有數組[i]? –

+0

@Longway_togo:你正在寫出字符串'「array [i]」'。要寫出數組,你不應該把它放在一個字符串中,不要使用索引,而是使用數組的名稱而不是「數組」,所以:'document.write(i);'。 – Guffa

0
var myArray = [7, -2, 3, -4, 5, 1, -6]; 
for (i=0;i<myArray.length;i++) 
{ 
if (myArray[i]<0) 
    myArray.splice(i, 1); 
} 
myArray.sort();