我有一个对象数组:
var arrObj = [
{ a: "11", b: "Test1" },
{ a: "22", b: "Test2" },
{ a: "33", b: "Test1" },
{ a: "44", b: "Test3" },
];
我想检查是否存在具有特定属性值
a
的对象。如果存在,那么它应该返回属性 b
的值。a
的值始终是唯一的。
例如,如果我正在寻找
"11"
,那么它应该返回 "Test1"
。
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
要小心处理查询的项未找到的情况,否则很容易遇到 null/undefined 错误 -
const data = [
{"a": "11", "b":"Test1"},
{"a": "22", "b":"Test2"},
{"a": "33", "b":"Test1"},
{"a": "44", "b":"Test3"},
]
const result = data.find(x => x.a == 11)
if (result == null)
console.log("not found")
else
console.log(result.b) // Test1
这个问题可以有多种解决方案,仅使用数组方法。可以使用
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)
考虑到您将具有相同的预定义属性
a
和 b
,您可以简单地使用 find
来达到您的目的。以下示例演示了如何在数组上使用 find
方法 -
const arrObj = [
{ a: "11", b: "Test1" },
{ a: "22", b: "Test2" },
{ a: "33", b: "Test1" },
{ a: "44", b: "Test3" },
];
// This will return the value of b or undefined
const newArrObj = arrObj.find(obj => obj.a === "11")?.b;
console.log(newArrObj);
我希望这段代码是你想要的:
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 对象数组中按 id 查找对象
的重复因此,看看该线程,这应该适合您。
var result = $.grep(arrObj, function(e){ return e.a == '11'; });
console.log(result[0].b);
您可以为第一行创建一个函数,并通过您要查找的 Id 来调用它。
希望这有帮助。