美文网首页
js数组分组和去重

js数组分组和去重

作者: chrisghb | 来源:发表于2019-06-12 21:12 被阅读0次

分组

const map = {};
const dest = [];
let result: any[];
const data = [
    { code: "aa", name: "王二" },
    { code: "aa", name: "王二" },
    { code: "aa", name: "王二" },
    { code: "aa", name: "王二" },
];
data.forEach(item => {
    if (!map[item.code]) {
        dest.push({
            code: item.code,
            lst: [item]
        });
        map[item.code] = item;
    } else {
        dest.forEach(it => {
            if (it.code === item.code) {
                it.lst.push(item);
            }
        });
    }
});

result = [...dest];

去重

//ES6
const dic = [1, 1, 3, 5];
const rlt = Array.from(new Set(dic));

//ES5
1.
const arr = [];
if (dic.length > 0) {
    dic.forEach(item => {
        if (arr.findIndex(it => it === item)) {
            arr.push(item);
        }
    })
}
console.log(arr);

2.时间复杂度o(n)
function fn(arr) {
  let obj = {};
  arr.forEach((item) => {
     obj[item] = '';//只保存最后出现的键为准,从而去重
  })
  return Object.keys(obj)
}

3.时间复杂度o(n*n)
function fn(arr) {
  //第一次出现的的元素下标才等于下标
  return arr.filter((item, index, arr) =>arr.indexOf(item) === index)     
}

笔试中经常出现的js数组排序与去重算法

相关文章

网友评论

      本文标题:js数组分组和去重

      本文链接:https://www.haomeiwen.com/subject/fkwrfctx.html