arrays - 如何检查 JSON 对象数组的每一项是否具有特定值?
问题描述
我正在使用 REACT JS。我的 JSON 对象数组具有以下格式:
{
"records": {
"Master Automotives": [
{
"SparePartID": "43",
"Name": "Oil and Lubricants",
"err": ""
},
{
"SparePartID": "45",
"Name": "Lights",
"err": "Stock Error"
}
],
"Repair Solutions": [
{
"SparePartID": "47",
"Name": "Steering Wheel",
"err": ""
}
],
"FiveStar Automotives": [
{
"SparePartID": "51",
"Name": "Brakes",
"err": ""
},
{
"SparePartID": "53",
"Name": "Clutch",
"err": "Stock Error"
},
{
"SparePartID": "55",
"Name": "LED",
"err": ""
}
]
}
}
现在在一个名为placeOrder () 的方法中,我想检查上面 JSON 中是否有任何具有列“ err ”值 =“Stock Error”的项目,如果任何一个或多个项目具有err值,我想将检查状态设置为真的。
但是所有项目的 err 值都等于 null 即err=""那么它应该 setState of check为false。
我在下面尝试了这段代码,但它不起作用。你能告诉我我做错了什么吗:
placeOrder()
{
const arr = {...this.state.myrecords};
Object.keys(arr).forEach(key => {
if (arr[key].err === 'Stock Error')
{
this.setState({
check: true
})
}
})
}
解决方案
如果我理解正确,那么您落后了一步,即您正在访问arr[key]
,这只会为您提供内部数组。
那是
[
{
"SparePartID": "43",
"Name": "Oil and Lubricants",
"err": ""
},
{
"SparePartID": "45",
"Name": "Lights",
"err": "Stock Error"
}
]`
您需要检查这些数组元素的err
.
arr[key][0].err === 'Stock Error'
这将检查第一个索引。您可以进一步map
在数组上实现一个函数来检查所有元素。
推荐阅读
- javascript - PL/Python 与 PostgreSQL - 错误 DLL 导入
- python - Gensim KeyedVector most_similar 的参数restrict_vocab 没有按预期工作
- macos - 在 Mac 上合并/组合从 Google Drive 下载的多个 ZIP 文件
- unity3d - 初始化组共享变量的最佳实践
- jquery - 删除页面上包含特定单词的所有元素:
- c# - 比较最后三个或 ... 字符并在数组 c# 中查找索引
- javascript - 在没有回调的情况下使用 Node.js 流
- python - Nginx proxy_pass 没有正确打开 Flask 的代理 url
- r - 使用 $ 运算符时循环返回 Null 值
- c# - AD B2C 防止新用户的密码过期