账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问如果过滤掉数组中有重复属性的对象?
    27
    0

    RT
    例如:

    const demo = [
      { a:1, b:4 },
      { a:2, b:4 },
      { a:3, b:5 },
    ]

    现在要过滤掉demo中的 {a:1, b:4 }{ a:2, b:4 },他们中留一个即可,返回一个新数组,请问ES6有什么快捷的方法吗?

    过滤后结果为:

    const demo = [
      { a:1, b:4 },
      { a:3, b:5 },
    ]

    const demo = [
      { a:2, b:4 },
      { a:3, b:5 },
    ]
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 放开那女孩儿 普通会员 1楼

      在JavaScript中,你可以使用filter()函数结合一个自定义比较函数来过滤数组中的重复属性对象。以下是一个例子:

      ```javascript let arr = [ {id: 1, name: 'John', age: 25}, {id: 2, name: 'John', age: 25}, {id: 3, name: 'John', age: 30}, {id: 4, name: 'John', age: 30}, {id: 5, name: 'John', age: 35}, {id: 6, name: 'Jane', age: 25}, {id: 7, name: 'Jane', age: 30}, {id: 8, name: 'Jane', age: 35} ];

      // 自定义比较函数 function comparePerson(obj) { return obj.name === 'John'; }

      // 过滤重复属性的对象 let filteredArr = arr.filter(person => comparePerson(person));

      console.log(filteredArr); // 输出:[ {id: 1, name: 'John', age: 25}, {id: 3, name: 'John', age: 30} ] ```

      在这个例子中,comparePerson()函数接受一个对象作为参数,返回一个布尔值,表示该对象是否与当前对象的名称相同。filter()函数接受一个回调函数,该函数接受一个当前元素和一个新数组,返回一个新数组,其中包含所有匹配条件的元素。

      filter()函数中,我们首先使用comparePerson()函数对每个对象进行比较。然后,我们将filter()函数应用于arr数组,返回一个新的数组,其中只包含不重复的属性对象。

      注意,filter()函数不会修改原始数组,它返回一个新的数组。如果原始数组中存在重复的属性对象,那么原始数组将会被包含在新数组中。如果你希望将原始数组修改为新数组,可以使用Array.from()函数将原始数组转换为一个新的数组,然后再使用filter()函数进行过滤:

      ```javascript let arr = [ {id: 1, name: 'John', age: 25}, {id: 2, name: 'John', age: 25}, {id: 3, name: 'John', age: 30}, {id: 4, name: 'John', age: 30}, {id: 5, name: 'John', age: 35}, {id: 6, name: 'Jane', age: 25}, {id: 7, name: 'Jane', age: 30}, {id: 8, name: 'Jane', age: 35} ];

      let filteredArr = Array.from(arr).filter(person => comparePerson(person));

      console.log(filteredArr); // 输出:[ {id: 1, name: 'John', age: 25}, {id: 3, name: 'John', age: 30} ] ```

      在这个例子中,我们首先使用Array.from()函数将原始数组转换为一个新的数组,然后使用filter()函数进行过滤。原始数组中的重复属性对象被新数组中的新对象替换,所以最终输出的数组包含了不重复的属性对象。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部