如何检查 JavaScript 中对象数组中是否存在某个值?

Div*_*vya 3 javascript arrays javascript-objects

我有一个对象数组:

var arrObj = [
    { a: "11", b: "Test1" },
    { a: "22", b: "Test2" },
    { a: "33", b: "Test1" },
    { a: "44", b: "Test3" },
];
Run Code Online (Sandbox Code Playgroud)

我想检查是否存在具有特定属性值的对象a。如果存在,那么它应该返回 property 的值b
的价值a永远是独一无二的。

例如,如果我正在寻找"11",那么它应该返回"Test1"

Tha*_*you 8

Array.prototype.find正是您要查找的 \xe2\x80\x93 它比Array.prototype.filter本例更好,因为一旦找到第一个匹配项,它就会停止迭代

\n

\r\n
\r\n
const data = [\n  {"a": "11", "b":"Test1"},\n  {"a": "22", "b":"Test2"},\n  {"a": "33", "b":"Test1"},\n  {"a": "44", "b":"Test3"},\n]\n\nconsole.log(data.find(x => x.a == 11).b)\n// Test1
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

当查询的项目没有找到时,你应该小心处理这种情况,否则很容易遇到空/未定义的错误 -

\n

\r\n
\r\n
const data = [\n  {"a": "11", "b":"Test1"},\n  {"a": "22", "b":"Test2"},\n  {"a": "33", "b":"Test1"},\n  {"a": "44", "b":"Test3"},\n]\n\nconst result = data.find(x => x.a == 11)\n\nif (result == null)\n  console.log("not found")\nelse\n  console.log(result.b) // Test1
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n