练习一封装函数 实现数组去重
例如:输入deweightArr([1,4,6,3,4,6,2]); 返回[1,4,6,3,2]
方法一从前往后查同一个值是否在两个索引中
function deweightArr(arr){
for(var i=0;i<arr.length;i++){
var char = arr[i];
if(arr.indexOf(char) !== arr.lastIndexOf(char)){
arr.splice(i,1);
i--;//防止跳过
}
}
return arr
}
console.log(deweightArr([1,4,6,3,4,3,1]));
方法二从后往前查同一个值是否在两个索引中
function deweightArr(arr){
var len =arr.length;
for(var i= len - 1;i >= 0 ;i--){
var char = arr[i];
if(arr.indexOf(char) !== arr.lastIndexOf(char)){//下标不同表示至少有两个索引值相同
arr.splice(i,1);
}
}
return arr;
}
console.log(deweightArr([1,4,6,3,4,3,1]));
方法三借助对象的属性是不重复的特点去重
function deweightArr(arr){
var obj={};
for(var i=0;i<arr.length;i++){
var char = arr[i];
obj[arr[i]] =arr[i];
}
var newArr=[];
for(var key in obj){
newArr.push(obj[key])//数组是数字类型的,但对象属性是字符串类型,所以去重后也是字符串类型的。+key就是数字类型了。或者使用数组的值obj[key]
}
return newArr
}
console.log(deweightArr([1,4,6,3,4,3,1]));
网友评论