[英]How to check if all objects in an array contains same keys and values?
如何檢查數組中的所有對象是否包含相同的鍵和值
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
}
如果你可以使用 lodash,那么有方法_.isEqual
const _ = require('lodash')
const arrOfObjects = [{a: 1, b: 2}, {a: 1, b: 2}, {a:1, b: 2 }]
let isEqual = true
arrOfObjects.forEach(obj => {
if (!_.isEqual(arrOfObjects[0], obj)) {
isEqual = false
}
})
return isEqual
PS:這可以用reduce寫在一行中,但對於編程新手或javascript的任何人來說都無法閱讀。
這是代碼:
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.