javascript - 在 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");
}
}
使用此代码,网站控制台上的结果将是“相等”和“无结果”,而我只想打印“相等”。我理解此代码中的逻辑错误,但我无法弄清楚正确的修复它的方法。
解决方案
由于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");
}
推荐阅读
- c++ - 反向素数
- svg - 从 svg 中剪切对象
- progress-bar - 布尔玛进度文本在中间
- amazon-web-services - 无法使用 AWS Schema Conversion Tool 连接到 Amazon Aurora (MySQL)
- javascript - 带有动态选择框的动态表单 - Laravel
- python - Python:让一个函数调用另一个已输入参数的函数
- swift - 如何调整 SKShapeNode 的大小?
- ios - React-Native 可访问性限制 fontSize 缩放
- apache-spark - 从 Spark 数据集中收集结果的最佳方法是什么?
- c# - Asp.Net Core MVC Ajax 标签助手 - 从控制器返回错误不起作用