繁体   English   中英

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

[英]Javascript: How to check if a value exists in an object

我有一组 object

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

我想检查 object 中是否存在“11”。 如果存在,那么它应该返回键“b”的值,即“Test1”。 键“a”中的值始终是唯一的。

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 => xa == 11).b) // Test1 

此代码将过滤您的数组。

 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); 

只使用数组方法可以解决这个问题。 可以使用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) 

我希望这段代码是你想要的:

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");

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

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]);
        }
    });
});

您可以使其成为具有箭头功能的单线。

 var arrObj=[ {"a": "11", "b":"Test1"}, {"a": "22", "b":"Test2"}, {"a": "33", "b":"Test1"}, {"a": "44", "b":"Test3"} ]; console.log(arrObj.filter(obj => obj.a == 11))

这是JavaScript对象数组中IDFind对象的可能重复

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

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

你可以为第一行创建一个函数并调用它传递你正在寻找的Id。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM