我有一个对象数组
var arrObj=[
{"a" : "11", "b":"Test1"},
{"a" : "22", "b":"Test2"},
{"a" : "33", "b":"Test1"},
{"a" : "44", "b":"Test3"}
];
我想检查一下" 11"存在于对象中。如果存在,那么它应该返回key" b"的值。即" Test1"。 键中的值" a"永远是独一无二的。
答案 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)
只使用数组方法可以解决这个问题。可以使用filter
,find
,findIndex
等方法。
以下是使用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。
希望这有帮助。