数组练习

2021-11-11  本文已影响0人  心存美好

练习一封装函数 实现数组去重

例如:输入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]));
上一篇 下一篇

猜你喜欢

热点阅读