2014-01-19 84 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();