1. let arr = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 5, 4, 3, 7, 8];

new Set()

Array.from() — 类数组转换为真数组

new Set() — 存储任何类型的唯一值

  1. let newArr = Array.from( new Set( arr ) );
  2. console.log( newArr );

includes()

includes — 一个数组是否包含一个指定的值

  1. let newArr = [];
  2. for ( let i = 0; i < arr.length; i++) {
  3. // 当 newArr 中不包含 arr 中的元素时, 就将该元素push到newArr中
  4. !newArr.includes( arr[i] ) ? newArr.push( arr[i] ) : [];
  5. }
  6. console.log( newArr );

indexOf()

findexOf — 返回元素首次在数组中出现的的索引位置

  1. let newArr = [];
  2. for (let i = 0; i < arr.length; i++) {
  3. // 新数组中是否存在当前元素,如果不存在,则push进去
  4. if (newArr.indexOf( arr[i] ) === -1) {
  5. newArr.push( arr[i] )
  6. }
  7. }
  8. console.log( newArr );

filter()

filter — 返回一个新数组,内容包括回调函数中满足条件的值

findexOf — 返回元素首次在数组中出现的的索引位置

  1. let newArr = arr.filter((value, index, currentArr) => {
  2. // 查找当前数组中 当前值 的索引是否等于 当前索引
  3. return currentArr.indexOf(value) === index;
  4. });
  5. console.log( newArr );

for + for + splice()

splice — 删除或替换元素中的值,改变原数组

  1. for (let i = 0; i < arr.length; i++) {
  2. for (let j = i + 1; j < arr.length; j++) {
  3. // 数组第一个元素 是否跟 后面的元素相等
  4. if (arr[i] === arr[j]) {
  5. // 相等后, 就从当前位置开始,删除一个
  6. arr.splice(j, 1);
  7. j--;
  8. }
  9. }
  10. }

对象数组去重 reduce

  1. // 对象数组去重
  2. let obj = {}
  3. let newArray = person.reduce((prev, item) => {
  4. obj[item.name] ? "" : obj[item.name] = true && prev.push(item)
  5. return prev
  6. }, [])