Heim > Fragen und Antworten > Hauptteil
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--;
}
}
}
某草草2017-06-30 10:00:48
如果遇到重复项,从 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--
的话会漏掉。
代言2017-06-30 10:00:48
楼上说的没错。补充一下,直接用 filter
就可以实现了。
var arr = [ 1,2,2,4,2 ];
arr.filter(function (e, i) {
return arr.indexOf(e) === i;
})