84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
var arr = [ 1,2,2,4,2 ];
for ( var i=0; i<arr.length; i++ ) {
for ( var j=i+1; j<arr.length; j++ ) { if ( arr[i] == arr[j] ) { arr.splice( j, 1 ); j--; } }
}
如果遇到重复项,从 arr 中 splice 掉。splice 掉之后,数组下一项仍是当前索引,所以要先 j--; 再循环中的 j++,保持索引正确。
j--
j++
比如,外层第2次循环,i = 1,j = 2,然后 arr[1] 是2,arr[2] 也是2,arr[2] 会被 splice 掉,数组变成 [1,2,4,2],下个元素 4 仍是第 2 项,如果不先 j--的话会漏掉。
楼上说的没错。补充一下,直接用 filter 就可以实现了。
filter
var arr = [ 1,2,2,4,2 ]; arr.filter(function (e, i) { return arr.indexOf(e) === i; })
如果遇到重复项,从 arr 中 splice 掉。
splice 掉之后,数组下一项仍是当前索引,所以要先
j--
; 再循环中的j++
,保持索引正确。比如,外层第2次循环,i = 1,j = 2,然后 arr[1] 是2,arr[2] 也是2,arr[2] 会被 splice 掉,数组变成 [1,2,4,2],下个元素 4 仍是第 2 项,如果不先
j--
的话会漏掉。楼上说的没错。补充一下,直接用
filter
就可以实现了。