Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在创建子对象的同时添加键/值对_Javascript_Object - Fatal编程技术网

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
    。您能提供一个从
    无效字段={}
    的初始化开始的示例吗?