检查javascript对象是否在现有数组中

时间:2016-12-17 10:19:35

标签: javascript

我想知道如何检查对象是否仍然存在于数组中

var a = [{ "id": 1, "name": "Jeffery" }, { "id": 2, "name": "Jimmy" }]

我试图查找Jeffery是否仍在此数组中:

var obj = { "names": { "Jeffery": { "age": 43, "job": "Doctor" }, "Jimmy": { "age": 23, "job": "Developer" } } };

我试图使用这个没有运气的代码。我做错了吗?

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

2 个答案:

答案 0 :(得分:2)

您可以使用in operator检查对象中的属性。

  

如果指定的属性位于指定的对象中, in运算符将返回true

&#13;
&#13;
function contains(name, obj) {
    return name in obj.names;
}

var obj = { names: { Jeffery: { age: 43, job: "Doctor" }, Jimmy: { age: 23, job: "Developer" } } };

console.log(contains('Jeffery', obj));
console.log(contains('Foo', obj))
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用函数contains,您可以检查所需的名称:'Jeffery'位于对象中,也位于数组中:

&#13;
&#13;
var a = [{ "id": 1, "name": "Jeffery" }, { "id": 2, "name": "Jimmy" }],
    obj = { "names": { "Jeffery": { "age": 43, "job": "Doctor" }, "Jimmy": { "age": 23, "job": "Developer" } } };

function contains(name, a, obj) {
    return obj.names[name] && a.filter(o => o.name === name) ? true : false;
}

console.log(contains('Jeffery', a, obj));
console.log(contains('Jimmy', a, obj));
console.log(contains('Foo', a, obj));
&#13;
&#13;
&#13;