JavaScript - 判断对象数组中是否存在某个对象(一维 / 多维数组判断)

深藏阁楼爱情的钟 2022-11-30 12:26 452阅读 0赞

一维数组

存在则返回当前项索引,不存在则返回 -1。

这个很简单,因为数组项不包含嵌套,直接用 JavaScript 提供的 indexOf 方法。

  1. // Array
  2. var arr = ['A', 'B', 'C']
  3. // 如果不等于-1则代表存在
  4. if(arr.indexOf('D') != -1){
  5. console.log('存在!')
  6. }
  7. // 否则不存在
  8. else{
  9. console.log('不存在!')
  10. }

多维数组

这类数组较为复杂,下面有 2 个经典方法,根据具体业务逻辑情况来选择。

一、利用数组 API some 来判断(全扒出来比一比)

  1. // Array
  2. var arr = [
  3. { name: 'A'},
  4. { name: 'B'},
  5. { name: 'C'}
  6. ]
  7. /* * @遍历循环找出相同项 * @返回值: Boolean * @如果返回true则表示有相同项 * @如果返回false则表示无相同项 * @注意:如果你需要更严格的对比, * 请自行添加if判断条件即可。 */
  8. var res = arr.some(item => {
  9. if(item.name == 'C'){
  10. return true;
  11. }
  12. })
  13. // 业务逻辑
  14. if(res){ //... }

很经典,微信小程序中也能使用。


二、通过 JSON API 转字符串来完成(但你必须确保对象顺向一致)

  1. // Array
  2. var arr = [
  3. { name: 'A'},
  4. { name: 'B'},
  5. { name: 'C'}
  6. ];
  7. // 假设这是动态获取到的数组项
  8. const item = { name: 'A'};
  9. // 如果数组里面不存在该项
  10. // 则把这个该项添加进去
  11. if(JSON.stringify(arr).indexOf(JSON.stringify(item)) == -1){
  12. arr.push(item);//把该项添加到数组中
  13. // ...
  14. }
  15. // 如果存在该项
  16. else {
  17. console.log('该项已存在!');
  18. // ...
  19. }

请注意!如果对象的顺序不一样,无法检测到重复项!

例如:

  1. const itme = { name: 'A', age: 12};
  2. const itme2 = { age: 12, name: 'A'};//X

发表评论

表情:
评论列表 (有 0 条评论,452人围观)

还没有评论,来说两句吧...

相关阅读