I have an array of objects and I need to get the "code" value where "selected" is true. At any instance, selected will be true only for one item. I have an implementation done and is there any way to improve upon it?
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>
Expected End output is “A1” for the above example. Please advice.
.find()would likely be a lot more readable than the nested lodash_.find()approach. (Albeit, there may be an even better alternative lodash approach.)