Javascript:如何检查对象中是否存在值

时间:2017-10-27 03:20:51

标签: javascript javascript-objects

我有一个对象数组

var arrObj=[
            {"a" : "11", "b":"Test1"},
            {"a" : "22", "b":"Test2"},
            {"a" : "33", "b":"Test1"},
            {"a" : "44", "b":"Test3"}
           ];

我想检查一下" 11"存在于对象中。如果存在,那么它应该返回key" b"的值。即" Test1"。 键中的值" a"永远是独一无二的。

6 个答案:

答案 0 :(得分:4)

Array.prototype.find正是您正在寻找的 - 在这种情况下它比Array.prototype.filter更好,因为它会在找到第一个匹配后立即停止迭代



const data =
  [ {"a" : "11", "b":"Test1"},
    {"a" : "22", "b":"Test2"},
    {"a" : "33", "b":"Test1"},
    {"a" : "44", "b":"Test3"} ]

console.log (data.find(x => x.a == 11).b)
// Test1




答案 1 :(得分:3)

此代码将过滤您的数组。



var arrObj=[
    {"a" : "11", "b":"Test1"},
    {"a" : "22", "b":"Test2"},
    {"a" : "33", "b":"Test1"},
    {"a" : "44", "b":"Test3"}
];

var newArrObj = arrObj.filter(function(obj) {
  return obj.a == 11;
})

console.log(newArrObj);




答案 2 :(得分:1)

只使用数组方法可以解决这个问题。可以使用filterfindfindIndex等方法。

以下是使用findIndex的摘要。如果元素存在于数组中,它将返回对象的索引,否则返回-1

var arrObj = [{
    "a": "11",
    "b": "Test1"
  },
  {
    "a": "22",
    "b": "Test2"
  },
  {
    "a": "33",
    "b": "Test1"
  },
  {
    "a": "44",
    "b": "Test3"
  }
];

var m = arrObj.findIndex(function(item) {
  return item.a === "11";
});
console.log(m)

答案 3 :(得分:0)

我希望这段代码符合您的要求:

var checkAndReturn =function (arr, n){
        for(let i = 0; i < arr.length; i++){
            if(arr[i]["a"] === n) return arr[i]["b"];
        }
}

使用它:

checkAndReturn(arrObj, "11");

答案 4 :(得分:0)

只使用循环和检查,希望这段代码适合你!

arrObj.forEach(function(a) {
    a = Object.keys(a).map(function(key){
        return a[key];
    });

    a.forEach(function(v2, k2, d){

        if(d[0] == 11) {
            console.log(d[1]);
        }
    });
});

答案 5 :(得分:-1)

这可能是Find object by id in an array of JavaScript objects

的副本

所以,看看那个帖子,这应该为你做。

var result = $.grep(arrObj, function(e){ return e.a == '11'; });
console.log(result[0].b);

您可以为第一行创建一个函数,并调用它来传递您正在寻找的ID。

希望这有帮助。