javascript - How to extract values from top level, by checking nested value?
问题描述
I need to extract all organizer_inn
and organizer_name
if suppliers
winner
is "True"
.
For example I need extract all organizer_inn
where 0278197430
.
My code is next:
var data = [{
"registration_number": "0301300020720000004",
"organizer_name": "Foo",
"organizer_inn": "026814121",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278209090"
}]
}
},
{
"registration_number": "0301300020720000004",
"organizer_name": "Bar",
"organizer_inn": "0268019693",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278209090"
}]
}
},
{
"registration_number": "0301300020720000002",
"organizer_name": "Bar2",
"organizer_inn": "7243435493",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "False",
"inn": "0278197430"
}, {
"winner": "False",
"inn": "0278216877"
}, {
"winner": "True",
"inn": "0268021212"
}]
}
}, {
"registration_number": "0301300020720000003",
"organizer_name": "some",
"organizer_inn": "0234534533",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278197430"
}]
}
} ]
// I tried to start with ...
data.forEach(el => el.lots.suppliers.forEach( s => {
if(s.inn == "0278197430")
{
if(s.winner == "True") {
}
}
}
) )
Could anybody help?
解决方案
var data = [{
"registration_number": "0301300020720000004",
"organizer_name": "Foo",
"organizer_inn": "026814121",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278209090"
}]
}
},
{
"registration_number": "0301300020720000004",
"organizer_name": "Bar",
"organizer_inn": "0268019693",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278209090"
}]
}
},
{
"registration_number": "0301300020720000002",
"organizer_name": "Bar2",
"organizer_inn": "7243435493",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "False",
"inn": "0278197430"
}, {
"winner": "False",
"inn": "0278216877"
}, {
"winner": "True",
"inn": "0268021212"
}]
}
}, {
"registration_number": "0301300020720000003",
"organizer_name": "some",
"organizer_inn": "0234534533",
"fas_complaints": "False",
"lots": {
"suppliers": [{
"winner": "True",
"inn": "0278197430"
}]
}
}
]
const output = [];
data.forEach(item => {
if (item.lots.suppliers.findIndex(s => s.winner === "True" && s.inn === '0278197430' ) !== -1)
output.push({
organizer_inn: item.organizer_inn,
organizer_name: item.organizer_name,
});
});
console.log(output);
推荐阅读
- elasticsearch - 相同的 Elasticsearch 查询需要不同的时间来返回响应
- javascript - npm run build 在我的 vue cli 项目中引发错误,但 npm run dev 工作正常
- dependency-injection - 我应该在 Simple Injector 中使用 Singleton 注册吗?
- java - 如何设置域类以从 RestTemplate 获取我的响应?
- javascript - 使用 AJAX 和 FormData 在 POST 上绑定列表
- java - 用于在 Java Embedded System 中存储位字符串的布尔数组或字符串
- angular - 当有两个,打字稿时,如何限制只选择一个复选框
- azure - 我们如何获取有关 azure app 服务因 502 错误而失败的信息
- ios - 如何使用数据任务实现后台提取?
- gradle - Intellij IDEA 中 Gradle API 的 Javadoc