数组去重的Pro版本

  // 根据name属性去重 数据的第一项和第二项因为name相同,也会被认为是一项
  const arr = [
    { name: "1", age: 12 },
    { name: "2", age: 12 },
    { name: "2", age: 15 },
  ];
  const handlerArr = (arr) => {
    const namesArr = [...new Set(arr.map((item) => item.name))];
    const newArr = namesArr.map((item) =>
      arr.find((items) => items.name === item)
    );
    return newArr;
  };
  // 方法二: map 去重
  const map = new Map();
  arr.forEach((item) => {
    const key = item["name"];
    if (!map.has(key)) {
      map.set(key, item);
    }
  });
  console.log([...map.values()]);
  // 根据整个对象去重
  const arr = [
    { name: "1", age: 12 },
    { name: "2", age: 12 },
    { name: "2", age: 15 },
    { name: "2", age: 15 },
  ];
  const handlerArr = (arr) => {
    const newArr = arr.map((items) => ({
      ...items,
      jsonStr: JSON.stringify(items),
    }));
    const setArr = [...new Set(newArr.map((item) => item.jsonStr))];
    const list = setArr.map((item) =>
      newArr.find((items) => items.jsonStr === item)
    );
    return list;
  };
  // 方法二 
  const newArr = [...new Set(arr.map((item) => JSON.stringify(item)))].map(
    (item) => JSON.parse(item)
  );
posted @ 2023-06-08 10:59  Life_countdown  阅读(11)  评论(0)    收藏  举报