检查Javascript对象中是否存在键和值

时间:2014-07-10 03:28:29

标签: javascript json

假设我有:

var original = {

    0: {
        id : 158    
    },
    1: {
        id : 159    
    }

}

var newSeries = {

    0: {
        id : 158,
        name: "Jason",
        lastname: "Smith",
        status : "active"   
    },
    1: {
        id : 159    ,
        name: "Rebecca",
        lastname: "Smith",
        status : "terminated"   
    }

}

我希望知道id newSeries original中存在来自in的{​​{1}},我将如何进行此操作?我找到了使用{{1}}运算符的部分解决方案,但只比较了它们的键而不是键和值。

4 个答案:

答案 0 :(得分:1)

如果您计划进行大量此类处理,我建议使用underscorejs。它有通过传递lamda函数,过滤,排序,合并,转换和许多其他功能来查找值的方法

使用underscorejs一个衬垫:

_(original).find(function(x) { return x.id == 159; })

Jsbin demo

答案 1 :(得分:1)

试试这个:

for (var n in newSeries) {
   console.log('id ' + 
               newSeries[n].id + 
               ' exists: ' +
               (original[n].id === newSeries[n].id));   
}

FIDDLE

答案 2 :(得分:0)

你必须遍历每个键和值来测试id是否存在。

例如

var myId = 158;
for (var key in original) {
    if (original[key].id === myId) {
        // here your id has been found
    }
}

如果您不想像这样循环浏览对象,则必须稍微更改数据结构。您可以使用id作为原始对象中的键,并按如下方式搜索:

var original = {

    158: {
        id : 158    
    },
    159: {
        id : 159    
    }
};

var myId = 158;

if (myId in original) {
    // here your id has been found
}

答案 3 :(得分:0)

如果你的目标是ES5:

function isValueInObject(value, object) {

    return Object.keys(object).map(function (key) {
        return object[key];
    }).some(function (_value) { 
        return _value === value; 
    });

}

console.log(isValueInObject('bar', {foo: 'bar'})) // true
console.log(isValueInObject('baz', {foo: 'bar'})) // false

Fiddle