【问题标题】:How to compare two value that has same property of objects?如何比较具有相同对象属性的两个值?
【发布时间】:2021-06-11 07:23:20
【问题描述】:

我有以下两个数据:

const data1 = 
[
  {
    "Name": "Shoes",
    "SKU": "SKU001",
    "Quantity": 4
  },
  {
    "Name": "Sweater",
    "SKU": "SKU002",
    "Quantity": 2
  }
]
const data2 =
[
  {
    "DN": "DN0001",
    "SKU": "SKU001",
    "Quantity": 4
  },
  {
    "DN": "DN0002",
    "SKU": "SKU002",
    "Quantity": 4
  }
]

我想比较每个 SKU data1 的数量和每个 SKU data2 的数量(相同与否)。我怎么能比较呢?

【问题讨论】:

  • 预期输出是什么?
  • 预期输出:data1的SKU001数量===data2的SKU001数量(真); data1 的 SKU002 数量 === data2 的 SKU002 数量(假)
  • 您的意思是要比较每个对象中Quantity 属性的值,这些对象在SKU 属性中具有相同的值?如果是这样的话,真正想要的结果是什么?一个简单的布尔数组,或者一个包含更多信息的对象?
  • 一个一个地使用特定的参考,还是一次全部?
  • 是的。那就是我的意思。简单的布尔数组就可以了

标签: javascript arrays json compare


【解决方案1】:

const data1 = 
[
  {
    "Name": "Shoes",
    "SKU": "SKU001",
    "Quantity": 4
  },
  {
    "Name": "Sweater",
    "SKU": "SKU002",
    "Quantity": 2
  }
]
const data2 =
[
  {
    "DN": "DN0001",
    "SKU": "SKU001",
    "Quantity": 4
  },
  {
    "DN": "DN0002",
    "SKU": "SKU002",
    "Quantity": 4
  }
]

let result = data1.map(d1 => data2.find(d2 => d2.SKU === d1.SKU)?.Quantity === d1.Quantity);

console.log(result);

【讨论】:

    【解决方案2】:

    你可以像下面这样尝试

    const data1 =
        [
            {
                "Name": "Shoes",
                "SKU": "SKU002",
                "Quantity": 4
            },
            {
                "Name": "Sweater",
                "SKU": "SKU002",
                "Quantity": 2
            }
        ]
    const data2 =
        [
            {
                "DN": "DN0001",
                "SKU": "SKU001",
                "Quantity": 4
            },
            {
                "DN": "DN0002",
                "SKU": "SKU002",
                "Quantity": 4
            }
        ]
    
    const result = data1.map((list) => {
        const hasItem = data2.find((data) => data.SKU === list.SKU);
        if (hasItem) {
            return hasItem.Quantity === list.Quantity;
        } else {
            return false
        }
    
    })
    
    console.log('res', result); // [true, false] 
    

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 2010-12-16
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多