2021-07-10 JS数组去重

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>js数组去重</title>
</head>

<body>

</body>
<script>
  /* #jiben */
  // 去重前
  // const arr1 = [1, 2, 3, 1, 2, 3, 3, 2, 2, 1, 2, 1, '3', '1', '3']
  // 去重后
  // console.log(fn(arr1));

  // 1. new Set
  // function fn(arr) {
  //   return [...new Set(arr)]
  // }

  // function fn(arr) {
  //   return Array.from(new Set(arr))
  // }

  // 2. 准备一个空数组 + 遍历要去重的数组拿到每一个元素(for forEach reduce) + 判断这个空数组中没有这个元素就push添加进去(includes indexOf)
  // function fn(arr) {
  //   const newArr = []
  //   for (let i = 0; i < arr.length; i++) {
  //     if(!newArr.includes(arr[i])){
  //       newArr.push(arr[i])
  //     }
  //   }
  //   return newArr
  // }

  // function fn(arr) {
  //   const newArr = []
  //   arr.forEach(e => {
  //     if(newArr.indexOf(e) === -1){
  //       newArr.push(e)
  //     }
  //   })
  //   return newArr
  // }

  // function fn(arr) {
  //   return arr.reduce((newArr,next) => {
  //     if(!newArr.includes(next)) {
  //       newArr.push(next)
  //     }
  //     return newArr
  //   },[])
  // }

  // 3. 双重循环 + splice
  // function fn(arr) {
  //   for(let i = 0;i<arr.length;i++){
  //     for(let j = i+1;j<arr.length;j++){
  //       if(arr[i] === arr[j]){
  //         arr.splice(j,1)
  //       }
  //     }
  //   }
  //   return arr
  // }
  /* #jiben */

  /* #obj */
  // 去重前
  // var arr = [
  //   {
  //     "id": "1001",
  //     "value": "111"
  //   },
  //   {
  //     "id": "1001",
  //     "value": "11111"
  //   },
  //   {
  //     "id": "1002",
  //     "value": "25462"
  //   }
  // ];
  // 去重后
  // console.log(fn(arr));

  // function fn(arr) {
  //   const obj = {}
  //   return arr.reduce((newArr, next) => {
  //     if (!obj[next.id]) {
  //       newArr.push(next)
  //       obj[next.id] = next.id
  //     }
  //     return newArr
  //   }, [])
  // }

  // function fn(arr) {
  //   const obj = {}
  //   const newArr = []
  //   // for(let i = 0;i<arr.length;i++){
  //   //   if(!obj[arr[i].id]){
  //   //     newArr.push(arr[i])
  //   //     obj[arr[i].id] = arr[i].id
  //   //   }
  //   // }
  //   arr.forEach(element => {
  //     if(!obj[element.id]){
  //       newArr.push(element)
  //       obj[element.id] = element.id
  //     }
  //   })
  //   return newArr
  // }

  // function fn(arr) {
  //   var obj = {};
  //   var dest = [];
  //   for (var i = 0; i < arr.length; i++) {
  //     if (!obj[arr[i].id]) {
  //       dest.push({
  //         id: arr[i].id,
  //         data: [arr[i]]
  //       })
  //       obj[arr[i].id] = arr[i].id;
  //     } else {
  //       for (var j = 0; j < dest.length; j++) {
  //         if (arr[i].id == dest[j].id) {
  //           dest[j].data.push(arr[i]);
  //           break;//找到同样id的之后 后面的就不用循环了 所以跳出循环
  //         }
  //       }
  //     }
  //   }
  //   return dest;
  // }
  /* #endobj */
</script>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值