gpt4 book ai didi

javascript - js中使用if语句向对象添加字段

转载 作者:行者123 更新时间:2023-12-03 01:13:38 30 4
gpt4 key购买 nike

我试图将大量对象聚合为单个对象,但我的 if 语句相互替换:

const obj = [];
res.map((el) => {
if (el.resource.name === "FORM01" && el.name === "cost.ttl") {
obj[el.resource.name] = { [el.name]: el };
}
if ( el.resource.name === "FORM01" && el.name === "cost.use") {
obj[el.resource.name] = { [el.name]: el };
}
});

在结果中我想添加

obj[el.resource.name] = {}

两个字段,例如 cost.ttlcost.use

最佳答案

如果您不使用结果,则 map 不是循环数组的正确工具。同样,如果您将字符串映射到值(el.resource.name 映射到对象),则数组不是要使用的正确对象类型。只需使用一个普通对象或一个Map即可。

您的两次分配发生冲突的原因是,第二次条件为真时,它会覆盖您分配的第一个对象。相反,创建一个对象,然后根据需要将每个属性添加到同一对象。

目前尚不清楚您真正想要的最终结果是什么,但也许是这样的:

const obj = {};       // *** Object, not array
res.forEach((el) => { // *** forEach, not map
if (el.resource.name === "FORM01" && (el.name === "cost.ttl" || el.name === "cost.use")) {
// *** Get the existing object if any; create and store a new one if there isn't already one there
const entry = obj[el.resource.name] = obj[el.resource.name] || {};
// *** Add this property to it
entry[el.name] = el;
}
});

或者您可以使用for-of:

const obj = {};
for (const el of res) {
if (el.resource.name === "FORM01" && (el.name === "cost.ttl" || el.name === "cost.use")) {
const entry = obj[el.resource.name] = obj[el.resource.name] || {};
entry[el.name] = el;
}
});

关于javascript - js中使用if语句向对象添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52114822/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com