数组去重、对象数组去重

一、 普通数组去重

1. new Set()

const arr = [1, 1, 2, 3, 4, 5, 5];

const newArr=Array.from(new Set(arr))

console.log("new Set", newArr);

2. 循环 + includes() 

const arr = [1, 1, 2, 3, 4, 5, 5];

let newArr: any = [];

arr.forEach((item) => {

    if (!newArr.includes(item)) {

        newArr.push(item);

    }

});

console.log('includes', newArr);

3. filter + indexOf 

const arr = [1, 1, 2, 3, 4, 5, 5];

const newArr = arr.filter((item, index) => arr.indexOf(item) === index);

console.log('filter + indexOf', newArr);

4.  reduce + includes

const arr = [1, 1, 2, 3, 4, 5, 5];

const newArr: any = arr.reduce((newArray: any[], currentArray) => {

    if (!newArray.includes(currentArray)) {

        newArray.push(currentArray);

    }

    return newArray;

}, []);

console.log('reduce', newArr);

5. 双重循环

const arr = [1, 1, 2, 3, 4, 5, 5];

let newArr: any = [];

arr.forEach((item) => {

    let flag = true;

    newArr.forEach((items) => {

        if (item === items) {

            flag = false;

        }

    });

    if (flag) {

        newArr.push(item);

    }

});

console.log('双重循环', newArr);

6. 循环 + every 

  const arr = [1, 1, 2, 3, 4, 5, 5];
  let uniqueArr = [];
  arr.forEach((item) => {
    if (uniqueArr.every((i) => i !== item)) {
      uniqueArr.push(item);
    }
  });
  console.log(uniqueArr);
  const arr = [1, 1, 2, 3, 4, 5, 5];
  let uniqueArr = [];
  arr.forEach((item) => {
    if (!uniqueArr.some((i) => i === item)) {
      uniqueArr.push(item);
    }
  });
  console.log(uniqueArr);

二、对象数组

1. filter + findIndex

  const arr = [
    { id: 1, name: 'AAA' },
    { id: 1, name: 'BBB' },
    { id: 2, name: 'CCC' },
    { id: 3, name: 'DDD' },
  ];
  const uniqueArr = arr.filter(
    (item, index) => arr.findIndex((i) => i.id === item.id) === index,
  );
  console.log(uniqueArr);

2. reduce + find

  const arr = [
    { id: 1, name: 'AAA' },
    { id: 1, name: 'BBB' },
    { id: 2, name: 'CCC' },
    { id: 3, name: 'DDD' },
  ];
  const uniqueArr = arr.reduce((newArray, current) => {
    if (!newArray.find((item) => item.id === current.id)) {
      newArray.push(current);
    }
    return newArray;
  }, []);
  console.log(uniqueArr);

3. forEach + some

  const arr = [
    { id: 1, name: 'AAA' },
    { id: 1, name: 'BBB' },
    { id: 2, name: 'CCC' },
    { id: 3, name: 'DDD' },
  ];
  let uniqueArr = [];
  arr.forEach((item) => {
    if (!uniqueArr.some((i) => i.id === item.id)) {
      uniqueArr.push(item);
    }
  }, []);
  console.log(uniqueArr);

你可能感兴趣的:(JavaScript,javascript,开发语言,ecmascript)