如何检查数组中的所有对象是否包含相同的键和值
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
}
答案 0 :(得分:2)
如果可以使用lodash,则有方法do {
try context.save()
items.append(theTitle)
}
catch {
}
for item in items {
print(item)
}
_.isEqual
PS:这可以与reduce一起写成一行,但是对于任何编程或javascript新手都不可读。
答案 1 :(得分:2)
代码如下:
const arrOfObjects = [
{ a: 1, b: 2 },
{ a: 1, b: 2 },
{ b: 2, a: 1 },
]
function areEquals(a, b) {
var keys1 = Object.keys(a)
var keys2 = Object.keys(b)
if(keys1.length !== keys2.length) {
return false ;
}
for(key in a) {
if(a[key] !== b[key]) return false;
}
return true ;
}
function checkArray(arr) {
for (var i = 1; i < arr.length; i++) {
if (!areEquals(arr[0], arr[i])) return false
}
return true
}
console.log(checkArray(arrOfObjects))