Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • 根据数组的某一属性去重

根据数组的某一属性去重

方法1:

unique(arr) {
  const res = new Map();
  return arr.filter((a) => !res.has(a.id) && res.set(a.id, 1));
},

方法2:

let data = [
   {id:1,name:'obj'},
   {id:3,name:'string'},
   {id:2,name:'arr'},
   {id:1,name:'num'}
 ];

let hash = {};

data = data.reduce(function(arr, current) {

    hash[current.id] ? '' : hash[current.id] = true && arr.push(current);

    return arr

}, []);

console.log(data)

拓展:

js sort方法根据数组中对象的某一个属性值进行排序

var arr = [{name:'zopp',age:0},{name:'gpp',age:18},{name:'yjj',age:8}];

function compare(property){
  return function(a,b){
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
  }
}
console.log(arr.sort(compare('age')))

如何根据参数不同,来确定是升序排列,还是降序排序呢?

/* 数组根据数组对象中的某个属性值进行排序的方法 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序

  • @param attr 排序的属性 如number属性
  • @param rev true表示升序排列,false降序排序* */
sortBy: function(attr,rev){
  //第二个参数没有传递 默认升序排列
  if(rev == undefined){
    rev = 1;
  } else {
    rev = (rev) ? 1 : -1;
  }
  return function(a,b){
    a = a[attr];
    b = b[attr];
    if(a < b){
      return rev * -1;
    }if(a > b){
      return rev * 1;
    }return 0;
  }
}
Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人