【问题标题】:Check if two objects are equal React Native检查两个对象是否相等 React Native
【发布时间】:2021-09-13 02:31:49
【问题描述】:

你能帮我看看如何检查两个对象是否相等吗?这是我要比较的两个对象...

let obj1 = {"Add Ons": [{"addon_id": 32, "addon_name": "Black Pearl", "addon_price": 15}, {"addon_id": 33, "addon_name": "White Pearl", "addon_price": 15}]}
let obj2 = {"Add Ons": [{"addon_id": 33, "addon_name": "White Pearl", "addon_price": 15}, {"addon_id": 32, "addon_name": "Black Pearl", "addon_price": 15}]}

我尝试使用这个const isEqual = (...objects) => objects.every(obj => JSON.stringify(obj) === JSON.stringify(objects[0])); 来检查它是否相等,但如果里面的数组是随机的,它会返回 false。如何检查它是否是随机事件?非常感谢!

【问题讨论】:

  • 你如何识别2个不同的对象?我的意思是我们可以使用哪个属性?所有的?如果任何值不同,它就不一样了吗?如果两个数组中存在相同的addon_id,我们可以称它为相等吗?
  • 您可以使用lodash 中的_isEqual 进行比较,如果需要,可以检查其他方法here。但我更喜欢使用_isEqual

标签: arrays react-native object


【解决方案1】:

假设您正在检查 addon_id 的相等性,

  1. 你可以得到像obj1['Add Ons']这样的数组
  2. 如果数组的长度不同,则它们不相等。
  3. 使用every() 检查第一个数组中的所有对象,并检查obj2 数组是否包含所有ID。
    function isEqual() {
    let obj1 = {
      'Add Ons': [
        { addon_id: 32, addon_name: 'Black Pearl', addon_price: 15 },
        { addon_id: 33, addon_name: 'White Pearl', addon_price: 15 }
      ]
    };
    let obj2 = {
      'Add Ons': [
        { addon_id: 33, addon_name: 'White Pearl', addon_price: 15 },
        { addon_id: 32, addon_name: 'Black Pearl', addon_price: 15 },
        { addon_id: 34, addon_name: 'Black Pearl', addon_price: 15 }
      ]
    };

    if (obj1['Add Ons'].length !== obj2['Add Ons']) return false;
    return obj1['Add Ons'].every(val => {
      return obj2['Add Ons'].some(b2 => b2.addon_id === val.addon_id);
    });
  }

 

【讨论】:

    猜你喜欢
    • 2019-11-04
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2017-02-20
    • 1970-01-01
    相关资源
    最近更新 更多