【发布时间】:2019-12-19 19:18:04
【问题描述】:
我有一个对象数组,我需要获取“选定”为真的“代码”值。在任何情况下,selected 仅对一个项目为 true。我已经完成了一个实现,有什么方法可以改进它吗?
const data = [
{
"id": "1",
"code": "A",
"selected": true,
"defaultCollapsed": false,
"label": "A",
"items": [
{
"id": "A1",
"code": "A1",
"label": "A-1 PP",
"selected": true,
"defaultCollapsed": false,
"url": "#A1"
},
{
"id": "A2",
"code": "A2",
"label": "A-2 ST",
"selected": false,
"defaultCollapsed": true,
"url": "#A2"
},
{
"id": "A3",
"code": "A3",
"label": "A-3 SR",
"selected": false,
"defaultCollapsed": true,
"url": "#A3"
},
{
"id": "A4",
"code": "A4",
"label": "A-4 BLS",
"selected": false,
"defaultCollapsed": true,
"url": "#A4"
},
{
"id": "A5",
"code": "A5",
"label": "A-5 BIFO",
"selected": false,
"defaultCollapsed": true,
"url": "#A5"
},
{
"id": "A6",
"code": "A6",
"label": "A-6 VA",
"selected": false,
"defaultCollapsed": true,
"url": "#A6"
}
]
},
{
"id": "2",
"code": "B",
"selected": false,
"defaultCollapsed": true,
"label": "B. ECQG",
"items": [
{
"id": "B1",
"code": "B1",
"label": "B-1 VR",
"selected": false,
"defaultCollapsed": true,
"url": "#B1"
}
]
},
{
"id": "3",
"code": "C",
"selected": false,
"defaultCollapsed": true,
"label": "C. CRR",
"items": [
{
"id": "C1",
"code": "C1",
"label": "C-1 RSR",
"selected": false,
"defaultCollapsed": true,
"url": "#C1"
},
{
"id": "C2",
"code": "C2",
"label": "C-2 Other",
"selected": false,
"defaultCollapsed": true,
"url": "#C2"
}
]
}
]
console.log(_.find(_.find(data, item => _.find(item.items, item1 => item1.selected)).items, item3 => item3.selected).code)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
上述示例的预期结束输出为“A1”。 请指教。
【问题讨论】:
-
请添加想要的结果。
-
添加了尼娜.....
-
您需要 lodash 解决方案吗?原生 JavaScript
.find()可能比嵌套的 lodash_.find()方法更具可读性。 (尽管,可能有更好的替代 lodash 方法。) -
@TylerRoper 没关系。我使用了 lodash,我们在代码中设置了 eslint-plugin-lodash
标签: javascript arrays lodash