如何在数组的多个对象中比较属性值?

时间:2018-09-13 18:58:48

标签: javascript jquery backbone.js underscore.js

如何比较数组中多个对象的属性值? 我在数组x中有一些对象。

var arr = [{a:1, b:2, c:3, d:4}, {a:1, x:2, y:3, z:4}, ...]

如果数组中所有对象中'a'的值都相同,我想比较并返回true

3 个答案:

答案 0 :(得分:3)

要检查所有对象的相同键是否都包含相同的值,可以使用destructuring assignment获取第一项并对照实际项进行检查。

var array = [{ a: 1, b: 2, c: 3, d: 4 }, { a: 1, x: 2, y: 3, z: 4 }],
    key = 'a';

console.log(array.every((a, _, [b]) => a[key] === b[key]));

采用子字符串进行补偿

var array = [{ a: 12345, b: 2, c: 3, d: 4 }, { a: 12367, x: 2, y: 3, z: 4 }];

console.log(array.every((a, _, [b]) => a.a.toString().slice(0, 3) === b.a.toString().slice(0, 3)));

ES5

var array = [{ a: 12345, b: 2, c: 3, d: 4 }, { a: 12367, x: 2, y: 3, z: 4 }];

console.log(array.every(function (a, _, b) {
    return a.a.toString().slice(0, 3) === b[0].a.toString().slice(0, 3);
}));

答案 1 :(得分:1)

我将简单地使用row.id来测试是否所有对象都具有Array.prototype.every()作为a

1

答案 2 :(得分:1)

似乎您可以使用Array.prototype.every()

它允许您对数组中的每个元素运行测试函数,如果数组中的每个元素都通过,则返回true,否则返回false。

编辑:如果要检查所有对象的属性均为a,并且所有值都相等,则可以执行以下操作:

const x = [{a:1, b:2, c:3, d:4}, {a:1, x:2, y:3, z:4}, {a:2, g:33, f:100}];
let condition = x.every( elem => elem.a == x[0].a);

如果 任何 个元素通过测试,则也可以使用Array.prototype.some()返回true或false。

这是显示情况的fiddle