1.使用splice()

  1. splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组
  2. 第一个参数表示要删除的位置(从0计数),第二个参数表示要移除的数组元素的个数
var aa = [4, 5, 6, 23, 33, 44, 55]
        console.log(aa);

        aa.splice(5,1)//删除下标为5开始的元素,并删除一个
        console.log(aa);
  • 打印结果
应用: 去掉一个数组的重复元素['c', 'a', 'z', 'a', 'x', 'a','c']===========> ['c', 'a', 'z', 'x']
<script>
function repeat(arr) {

            for (var i = 0; i < arr.length; i++) {
                for (var j = i + 1; j < arr.length; j++) {//第一次是拿第一个数据和剩余的n-1个数据判断是否相等、第二次是拿第二个数据和剩余的n-1个数据相比
                    if (arr[i] == arr[j]) {

                        var del = j;

                        arr.splice(del, 1);//找到了该数据的下标就删除了
                    }
                }
            }
            return arr;
        }
        
        var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'c'];
        console.log(repeat(arr));
 </script>
  • 打印结果

2. 使用indexOf()

indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

//获取数组元素的下标----没有该元素的时候返回值为-1,有就返回该元素的下标
        var aa = [4, 5, 6, 23, 33, 44, 55]
        console.log(aa);
        console.log(aa.indexOf(222));
        console.log(aa.indexOf(44));
        
 //数组末尾追加元素  666  
		aa.push(666);
        console.log(aa);
  • 打印结果
应用:
<script>
   function repeat1(arr) {
            var temp = [];//建立一个新数组保存删除后的数组
            //遍历数组
            for (var i = 0; i < arr.length; i++) {

                if (temp.indexOf(arr[i]) == -1) {//在新数组中若不存在,该元素则添加到该temp[]数组中

                    temp.push(arr[i])//push()------ 在数组末尾追加元素
                }
            }
            return temp;//返回删除后的数组

        }

        console.log(repeat1(arr));//调用函数并打印结果
  </script>
  • 打印结果

3. 使用Set

  1. Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
  2. Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的
var aa = [1,2,3,3,2,1,4,5,6]
console.log(new Set(aa));

jquery去重复对象数组 js去除重复元素_js

4. 数组中去除数组

遇到了一个特别的:第一个数组中去除第二个数组中的所有元素。

jquery去重复对象数组 js去除重复元素_数组_02

let arr1 = [
            { id: 639, name: "商品管理", type: 0, pId: 638, code: "1" },
            { id: 640, name: "商品分类", type: 0, pId: 639, code: "2" },
            { id: 642, name: "增加分类", type: 0, pId: 640, code: "3" },
            { id: 645, name: "编辑分类", type: 0, pId: 640, code: "4" },
            { id: 646, name: "消息管理", type: 0, pId: 655, code: "4" }
        ]
        let arr2 = [
            { id: 640, name: "商品分类", type: 0, pId: 639, code: "2" },
            { id: 642, name: "增加分类", type: 0, pId: 640, code: "3" },
            { id: 645, name: "编辑分类", type: 0, pId: 640, code: "4" },
        ]
let res= arr2.map(el=>el.id)//取出一组唯一标识
      
       let finalResult=[]
       arr1.forEach(el=>{
           if(!res.includes(el.id)){
               finalResult.push(el)
           }
       })
       console.log(finalResult,'finalResult');

更简洁的方法使用filter

let res= arr2.map(el=>el.id)
       let finalResult= arr1.filter(el=>!res.includes(el.id))
       console.log(finalResult,'finalResult');

jquery去重复对象数组 js去除重复元素_jquery去重复对象数组_03