So I have this arr
let arr = [{
category_set_id: 25,
name: "25name",
el: [
{name: "25name1", value: "25value1"}
]
},
{
category_set_id: 44,
name: "44name",
el: [
{name: "44name1", value: "44value1"}
]
},
]
And this is the element i need to push into this arr of objects
let elToPush = {category_set_id: 44, name: "44name2", value: "44value2"}
As you can see, it belongs in the second eleement of the arr, and it must somehow be pushed into the el property, resulting in
let arr = [{
category_set_id: 25,
name: "25name",
el: [
{name: "25name1", value: "25value1"}
]
},
{
category_set_id: 44,
name: "44name",
el: [
{name: "44name1", value: "44value1"},
{name: "44name2", value: "44value2"}
]
},
]
So I know I can maybe first filter the arr to get my desired section, fe
let toModify = arr.filter(i => i.category_set_id === elToPush.id)
Then having that I could
let newarr = [toModify.el, ...elToPush] toModify.el = newarr
And finally I must somehow replace it in the global arr
Can someone lend a hand with this?
Advertisement
Answer
You can use findIndex to find the index of category_set_id: 44, from arr. If arr contains such object then it will return the index which will be greater than -1. Then use this index to push the required value
let arr = [{
category_set_id: 25,
name: "25name",
el: [{
name: "25name1",
value: "25value1"
}]
},
{
category_set_id: 44,
name: "44name",
el: [{
name: "44name1",
value: "44value1"
}]
}
];
let elToPush = {
category_set_id: 44,
name: "44name2",
value: "44value2"
};
const getIndex = arr.findIndex(item => item.category_set_id === elToPush.category_set_id);
if (getIndex > -1) {
arr[getIndex].el.push({
name: "44name2",
value: "44value2"
})
};
console.log(arr)Alternatively you can also use find which will return the object if category_set_id matches
let arr = [{
category_set_id: 25,
name: "25name",
el: [{
name: "25name1",
value: "25value1"
}]
},
{
category_set_id: 44,
name: "44name",
el: [{
name: "44name1",
value: "44value1"
}]
}
];
let elToPush = {
category_set_id: 44,
name: "44name2",
value: "44value2"
};
const obj = arr.find(item => item.category_set_id === elToPush.category_set_id);
obj && obj.el.push({
name: elToPush.name,
value: elToPush.value
})
console.log(arr)