Я бы использовал Array.reduce :
const data1 = [{a:1, b:2, c:3, d:4}, {a:1, x:2, y:3, z:4}];
const data2 = [{a:1, b:2, c:3, d:4}, {a:1, x:2, y:3, z:4}, {a: 2}];
data1.reduce((acc, item) => acc && item.a === 1, true); // true
data2.reduce((acc, item) => acc && item.a === 1, true); // false
Для получения true
, если значение a
одинаково во всех объектах массива, я бы использовал Array.prototype.some
с простой инверсией:
!data1.some((item, index, list) => item.a !== list[index && 1 - 1].a); // true
!data2.some((item, index, list) => item.a !== list[index && 1 - 1].a); // false
Здесь я ищу первый элемент в списке, который имеет свойство a
, которое не соответствует свойству a
предыдущего элемента. Элемент с нулевым индексом будет пропущен, он будет сравниваться с самим собой (index && 1 - 1
- это просто 0
, если индекс - 0
). Результат инвертируется с !
, поэтому у меня будет true
, если элемент не найден.