js和jquery对象数组去重

JavaScript中,可以通过使用Set来进行数组去重,而jQuery中也提供了unique方法来实现。

以下是使用原生JavaScript和jQuery分别对对象数组去重的示例代码:

使用原生JavaScript进行对象数组去重

const arr = [
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 1, name: 'Alice'},
  {id: 3, name: 'Charlie'},
  {id: 2, name: 'Bob'}
];

const uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);

console.log(uniqueArr);

解释:

  • 通过arr.map(JSON.stringify)将对象数组中的每个对象转换为字符串
  • 通过new Set去重字符串数组
  • 通过Array.fromSet转换为数组
  • 通过map将字符串转换为对象

输出结果:

[
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 3, name: 'Charlie'}
]

使用jQuery进行对象数组去重

const arr = [
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 1, name: 'Alice'},
  {id: 3, name: 'Charlie'},
  {id: 2, name: 'Bob'}
];

const uniqueArr = $.unique(arr);

console.log(uniqueArr);

输出结果:

[
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 3, name: 'Charlie'}
]

以上两种方法都可以实现对象数组的去重。如果需要更好的性能,可以根据具体情况选择最合适的方法。


Js和Jquery如何把不同顺序属性且有5个属性的对象数组去重

如果要去重的对象数组包含5个属性,且属性顺序不同,可以将对象的属性按照一定的顺序进行排序,然后将排序后的属性值拼接成一个字符串作为判断依据进行去重。

下面是使用 JavaScript 的方法来去重对象数组的示例代码:

// 定义对象数组
const arr = [
  { id: 1, name: 'Alice', age: 20, gender: 'female', address: 'Beijing' },
  { gender: 'male', age: 25, address: 'Shanghai', name: 'Bob', id: 2 },
  { gender: 'female', name: 'Alice', age: 20, address: 'Beijing', id: 1 },
  { address: 'Shenzhen', id: 3, age: 30, name: 'Charlie', gender: 'male' },
];

// 定义一个 Set 来进行去重
const set = new Set(arr.map(item => {
  // 对象属性按照固定顺序进行排序
  const sortedItem = {
    address: item.address,
    age: item.age,
    gender: item.gender,
    id: item.id,
    name: item.name,
  };
  // 将排序后的属性值拼接成一个字符串作为判断依据
  return JSON.stringify(sortedItem);
}));

// 将 Set 转换成数组,并将字符串转换成对象
const result = Array.from(set).map(str => JSON.parse(str));

console.log(result);
// 输出:[
//   { id: 1, name: 'Alice', age: 20, gender: 'female', address: 'Beijing' },
//   { gender: 'male', age: 25, address: 'Shanghai', name: 'Bob', id: 2 },
//   { address: 'Shenzhen', id: 3, age: 30, name: 'Charlie', gender: 'male' },
// ]

以上代码中,首先定义一个固定顺序的对象来对每个对象的属性进行排序。然后将排序后的属性值拼接成一个字符串作为判断依据,并使用Set 进行去重。最后将 Set 转换成数组,并将字符串转换成对象,得到一个去重后的对象数组。

如果要在 jQuery 中进行对象数组去重,可以使用 $.unique 函数,并指定一个比较函数来进行判断。

下面是使用 jQuery 的方法来去重对象数组的示例代码:

// 定义对象数组
const arr = [
  { id: 1, name: 'Alice', age: 20, gender: 'female', address: 'Beijing' },
  { gender: 'male', age: 25, address: 'Shanghai', name: 'Bob', id: 2 },
  { gender: 'female', name: 'Alice', age: 20, address: 'Beijing', id: 1 },
  { address: 'Shenzhen', id: 3, age: 30, name: 'Charlie', gender: 'male' },
];

// 使用 $.unique 函数进行去重
$.unique(arr, false, item => {
  // 对象属性按照固定顺序进行排序
  const sortedItem = {
    address: item.address,
    age: item.age,
    gender: 'male',
    id: item.id,
    name: item.name,
};
// 将排序后的属性值拼接成一个字符串作为判断依据
return JSON.stringify(sortedItem);
});

console.log(arr);
// 输出:[
// { id: 1, name: 'Alice', age: 20, gender: 'female', address: 'Beijing' },
// { gender: 'male', age: 25, address: 'Shanghai', name: 'Bob', id: 2 },
// { address: 'Shenzhen', id: 3, age: 30, name: 'Charlie', gender: 'male' },
// ]

以上代码中,使用 $.unique 函数进行去重,并指定一个比较函数来进行判断。比较函数中,同样按照固定顺序对每个对象的属性进行排序,并将排序后的属性值拼接成一个字符串作为判断依据。最后输出去重后的对象数组。

需要注意的是,jQuery 3.x 版本中已经移除了 $.unique 函数,如果需要使用该函数,可以考虑使用 jQuery Migrate 插件或者自行实现去重功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值