Javascript 在创建子对象的同时添加键/值对
我不熟悉处理对象。我想:Javascript 在创建子对象的同时添加键/值对,javascript,object,Javascript,Object,我不熟悉处理对象。我想: 添加密钥 将子对象添加到该关键点 将键/值对推送到该子对象 例如,我希望实现的数据结构是: invalidFields = { "_0" : { "firstName" : "foo", "lastName" : "la", } } 最嵌套的键/值对的添加是通过迭代和比较来完成的,因此本质上它需要添加到“\u 0”,而不是覆盖它 到目前为止,我已经: let invalidFields = {}; // this is
invalidFields = {
"_0" : {
"firstName" : "foo",
"lastName" : "la",
}
}
最嵌套的键/值对的添加是通过迭代和比较来完成的,因此本质上它需要添加到“\u 0”,而不是覆盖它
到目前为止,我已经:
let invalidFields = {}; // this is initialised outside of the for loop
...
const field = "foo";
const passengerIdentifier = "_" + passengerIndex; // "_0"
const fieldKey = "firstName";
invalidFields[passengerIdentifier] = field;
这会添加“firstName”:“foo”
的键/值对,但当循环继续时,它会覆盖它,因此我得到的数据仅应用于字段:
invalidFields = {
"_0" : "foo",
}
这显然是不正确的,因为我需要将键/值对添加到“\u 0”
子对象中。我做错了什么
编辑:下面是我现在拥有的一个示例,但这似乎不起作用,未添加字段部分:
const passengerIdentifier = '_'+passengerIndex;
if (!invalidFields[passengerIdentifier]) {
Object.assign(invalidFields, { [passengerIdentifier] : '' });
Object.assign(invalidFields[passengerIdentifier], { [fieldKey]: field });
}
这能达到你想要达到的目的吗
invalidFields[passengerIdentifier] = {
[fieldKey]: field
}
这能达到你想要达到的目的吗
invalidFields[passengerIdentifier] = {
[fieldKey]: field
}
要向每个子对象添加键/值对,请使用以下方法:
...
var field = "foo",
passengerIdentifier = "_" + passengerIndex, // "_0"
fieldKey = "firstName";
// assuring sub-object with certain `passengerIdentifier`
invalidFields[passengerIdentifier] = invalidFields[passengerIdentifier] || {};
invalidFields[passengerIdentifier][fieldKey] = field;
要向每个子对象添加键/值对,请使用以下方法:
...
var field = "foo",
passengerIdentifier = "_" + passengerIndex, // "_0"
fieldKey = "firstName";
// assuring sub-object with certain `passengerIdentifier`
invalidFields[passengerIdentifier] = invalidFields[passengerIdentifier] || {};
invalidFields[passengerIdentifier][fieldKey] = field;
可以使用新的键/值并将其添加到循环中的现有对象中
// outside of the loop
invalidFields[passengerIdentifier] = {};
// inside of the loop
Object.assign(invalidFields[passengerIdentifier], { [fieldKey]: field });
为了完整起见,可以将值直接分配给对象
// inside of the loop
invalidFields[passengerIdentifier][fieldKey] = field;
可以使用新的键/值并将其添加到循环中的现有对象中
// outside of the loop
invalidFields[passengerIdentifier] = {};
// inside of the loop
Object.assign(invalidFields[passengerIdentifier], { [fieldKey]: field });
为了完整起见,可以将值直接分配给对象
// inside of the loop
invalidFields[passengerIdentifier][fieldKey] = field;
你的问题不清楚。是否要在对象中包含多个键“\u 0”。这是不可能的。对象中的键是唯一的。您可以发布完整循环吗?不知道迭代的数据类型很难回答。Object.assign(invalidFields,{[passengerIdentifier]:'''})代码>指定一个字符串,但您需要一个对象作为内容。@NinaScholz谢谢!那个works@NinaScholz但是,它不会以任何顺序添加它们:(是否可以保持它们的顺序?您的问题尚不清楚。是否希望对象中有多个键“\u 0”。这是不可能的。对象中的键是唯一的。请发布完整循环?如果不知道迭代的数据类型,很难回答。object.assign(invalidFields,{[passengerIdentifier]:''});
分配一个字符串,但您需要一个对象作为内容。@NinaScholz谢谢!这是works@NinaScholz但是,它不会按任何顺序添加它们:(是否有可能使它们保持有序?谢谢,这看起来确实很好且简洁。但是我现在正努力使用相同的概念,以同样的方式添加第一部分passengerIdentifier
,例如\u 0
。您能否提供一个从invalidFields={}初始化开始的示例
?谢谢,这看起来很好,也很简洁。但是我现在正努力使用相同的概念,以同样的方式添加第一部分passengerIdentifier
,例如\u 0
。您能提供一个从无效字段={}
的初始化开始的示例吗?