首页 > 解决方案 > 在 JavaScript 中使用 match() 或 find() 匹配 JSON 数组中的某个值

问题描述

我正在寻找解决此问题的函数或方法 这是 JSON 数组

[{
    "type": "radar",
    "detail": [{
        "subject": "sub1"
    }, {
        "subject": "sub2"
    }]
}, {
    "type": "bar",
    "detail": [{
        "subject": "sub1"
    }, {
        "subject": "sub2"
    }]
}]

我希望识别“type”的值,在这种情况下是“radar”和“bar”,并与变量x匹配。这是代码:

for(x in myarray)
{
    if(myarray[x]['type']=="bar")
    {
        console.log("equal");
    }
    else
    {
        console.log("no result");
    }
}

使用此代码,网站控制台上的结果将是“相等”和“无结果”,而我只想打印“相等”。我理解此代码中的逻辑错误,但我无法弄清楚正确的修复它的方法。

标签: javascriptarraysjson

解决方案


由于for循环针对数组中的每个对象运行,因此第一个控制台日志equal用于匹配类型,第二个控制台日志用于不匹配类型。因此,要仅获得一个控制台并编写更合适的代码,您可以使用Array.find()然后为此添加一个if-else块。像这样的东西:

var myarray = [ { "type":"radar", "detail": [{ "subject":"sub1" }, { "subject":"sub2" }] }, { "type":"bar", "detail": [{ "subject":"sub1" }, { "subject":"sub2" }] } ];

var match = myarray.find(({type}) => type === "bar");
if(match) {
  console.log("equal");
} else {
   console.log("no result");
}


推荐阅读