Вы можете добавить несколько проверок и перемотать массив.
const addToListing = (field, value, index=0) => {
config = {
...config,
listing: Object.assign(
[],
(config.listing || []),
{ [index]: { ...(config.listing?.[index] || []), [field]: value } }
)
}
};
var config = { existing_variable: 'example' };
addToListing('first', 1, 0);
addToListing('second', 2, 0);
addToListing('first', 3, 1);
console.log(config)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Без опциональный оператор цепочки ?.
, но с другими значениями по умолчанию.
const addToListing = (field, value, index=0) => {
config = {
...config,
listing: Object.assign(
[],
(config.listing || []),
{ [index]: { ...((config.listing || [])[index] || []), [field]: value } }
)
}
};
var config = { existing_variable: 'example' };
addToListing('first', 1, 0);
addToListing('second', 2, 0);
addToListing('first', 3, 1);
console.log(config)
.as-console-wrapper { max-height: 100% !important; top: 0; }