例1、一个数字如果数组里有就不加,如果没有就往后面添加
var arr = [ 5,4,7,8,9,10 ];
var num = 2;
if( arr.indexOf( num ) ===-1 ){ //如果没有一样就把2放进去
arr.push( num );
}
console.log( arr ); 结果 [ 5,4,7,8,9,10,2 ];
例2、去重复的数字
<script>
var arr = [ 55,6,6,8,1,8,8,4,2,84,0 ];
var arr2 = [];
arr2.push( arr[0] );
for ( var i=0 ; i<arr.length ; i++ ){
if( arr2.indexOf( arr[i])=== -1 ){
arr2.push( arr[i] );
}
}
console.log( arr2 ); 结果: [55, 6, 8, 1, 4, 2, 84, 0]
/*
var arr = [ 55,6,6,8,1,884,2,84,0 ];
var arr2 = [ 55 ];
思路:
先把arr的第一位放进来;
再从arr拿第二个过来遍历arr2看有没有
arr2.indexOf( arr[2] ) 没有就把它放进去 arr2.push( arr[2] );
arr2.indexOf( arr[3] ) 没有就把它放进去 arr2.push( arr[3] );
arr2.indexOf( arr[4] ) 没有就把它放进去 arr2.push( arr[4] );
for( var i=0 ; i<arr.length ; i++ ){
if( arr2.indexOf( arr[i] ) ){
arr2.push( arr[i] )
}
}
*/
</script>
第二种方法
var arr = [1 , 8 , 8 , 84 , 21 , 21 , 8 , 1 , 74];
/*
思路:
如果拿第一项往后面一个比,如果相同在删掉的时候会改变数组的长度
===>[1 , 8 , 8 , 84 , 21 , 21 , 8 , 1 , 74];这里的长度就变短了,循环到后面的时候数组就没原来的长了,会出错,
所以只能拿后面往前比,如果删掉后面,序号就在前一位了
*/
for ( var i= arr.length-1 ; i>= 0 ; i-- ){
// i = 9 j = 8开始 74 没删掉
// i = 8 j = 7开始 1 被删掉 [1 , 8 , 8 , 84 , 21 , 21 , 8 , 74]
// i = 7 j = 6开始 8 被删掉 [1 , 8 , 84 , 21 , 21 , 74]
// i = 6 j = 5开始 21 被删掉 [1 , 8 , 84 , 21 , 74]
for ( var j=i-1 ; j>= 0 ; j-- ){
if( arr[i] === arr[j] ){
arr.splice( i,1 );
}
}
}
console.log( arr );
网友评论