【发布时间】:2023-03-08 18:03:01
【问题描述】:
如何检查数组中的所有对象是否包含相同的键和值
const arrOfObjects = [{a: 1, b: 2}, {a: 1, b: 2}, {a:1, b: 2 }] // true
const arrOfObjects = [{a: 1, b: 2}, {a: 1, b: 2}, {a:2, b: 1 }] //false
const arrOfObjects = [{a: 1, b: 2}, {a: 1, b: 2, c: 3}, {a:2, b: 1 }] //false
这是我的试用版,看起来如此丑陋和糟糕并且无法正常工作,如果有人为该问题提供有效的代码,我将不胜感激!
function test(arr){
const firstItem = arr[0];
const firstItemKeys = Object.keys(firstItem);
for(let i = 0; i < firstItemKeys.length; i++) {
for(let j = 0; j < arr.length; j++) {
for(let x in arr[j]) {
if(arr[j][x] !== firstItem[firstItemKeys[i]]) return false
}
}
}
return true
}
【问题讨论】:
-
查看stackoverflow.com/questions/201183/… 了解检查对象是否相等的方法。然后在循环中使用其中一种技术。
-
这个问题的一些重要限制:外部库是否可以接受?对象是否总是单层深度,或者它们可能是嵌套的?您能否确认值是否始终是标量值?这些将是满足您的要求的重要考虑因素。
-
@AlexanderNied 不,我不想使用库,也没有嵌套对象和值并不总是标量
标签: javascript