【问题标题】:Add JavaScript object to JavaScript object将 JavaScript 对象添加到 JavaScript 对象
【发布时间】:2010-12-17 13:00:41
【问题描述】:

我想在另一个 JavaScript 对象中包含 JavaScript 对象:

Issues:

  - {"ID" : "1", "Name" : "Missing Documentation", "Notes" : "Issue1 Notes"}
  - {"ID" : "2", "Name" : "Software Bug", "Notes" : "Issue2 Notes, blah, blah"}
  - {"ID" : "2", "Name" : "System Not Ready", "Notes" : "Issue3 Notes, etc"}
  // etc...

所以,我希望“问题”来保存这些 JavaScript 对象中的每一个,这样我就可以说问题 [0].Name 或问题 [2].ID 等。

我已经创建了外部的 Issues JavaScript 对象:

var jsonIssues = {};

我已经到了需要向其添加 JavaScript 对象的地步,但不知道如何操作。我想说的是:

Issues<code here>.Name = "Missing Documentation";
Issues<code here>.ID = "1";
Issues<code here>.Notes = "Notes, notes notes";

有没有办法做到这一点?谢谢。

更新:根据给出的答案,声明一个数组,并根据需要推送 JavaScript 对象:

var jsonArray_Issues = new Array();

jsonArray_Issues.push( { "ID" : id, "Name" : name, "Notes" : notes } );

感谢您的回复。

【问题讨论】:

  • 有很多答案指示您转换为数组(我看到您最后做到了)。我知道这是一个老问题,但有一个新的解决方案。对于任何来此寻找如何将对象添加到对象的问题的答案的人,请查看 Object.assign。 (它是新的,但这个问题在搜索中很高)我花了很多时间寻找一个不涉及创建数组然后将其转换回来的解决方案。这是规格:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: javascript object add


【解决方案1】:
var jsonIssues = []; // new Array
jsonIssues.push( { ID:1, "Name":"whatever" } );
// "push" some more here

【讨论】:

  • @jldupont,感谢您的回答!当我问这个问题时,我并没有考虑数组。但这是有道理的。
  • 这是否适用于 unshift,因为我想在第一个位置添加对象。
【解决方案2】:

由于我的第一个对象是原生 JavaScript 对象(用作对象列表),push 在我的场景中不起作用,但我通过添加新键解决了它,如下所示:

MyObjList['newKey'] = obj;

除此之外,了解如何删除与之前插入的相同对象可能很有用:

delete MyObjList['newKey'][id];

希望它对我有所帮助。

【讨论】:

  • 这似乎是对操作的原始问题的最佳技术答案。
【解决方案3】:
var jsonIssues = [
 {ID:'1',Name:'Some name',Notes:'NOTES'},
 {ID:'2',Name:'Some name 2',Notes:'NOTES 2'}
];

如果你想添加到数组中,那么你可以这样做

jsonIssues[jsonIssues.length] = {ID:'3',Name:'Some name 3',Notes:'NOTES 3'};

或者你可以使用其他人发布的推送技术,这也很好。

【讨论】:

  • 所以本质上,我会有一个 JSON 对象数组?
  • 我相信 OP 也想知道如何添加对象到你所拥有的。
  • 您将拥有一个 JavaScript 对象数组。 JSON 只是一个恰好符合 JavaScript 子集的序列化。
  • 是的,对不起,您可以像手动构建的数组一样添加它
【解决方案4】:

// 递归合并object2到object1

$.extend( true, object1, object2 );

//将object2合并到object1中

$.extend( object1, object2 );

https://api.jquery.com/jquery.extend/

【讨论】:

    【解决方案5】:

    如果不是对象数组,您可以这样做:

    let student= {
      name : 'Mr. Anderson',
      id: 35
    }
    
    student['grade'] = 10; //for a property. 
    

    结果:

    student= {
      name : 'Mr. Anderson',
      id: 35,
      grade:10
    }
    

    你也可以添加一个对象:

    let student= {
     personalData:{
      //personal data key-value
     }
    }
    
    let academicData = {
     //academic data key-value
    }
    
    student['academicData'] = academicData;
    

    结果:

     student{
            personalData{},
            academicData{}
        }
    

    【讨论】:

      【解决方案6】:

      jsonIssues = [...jsonIssues,{ID:'3',Name:'name 3',Notes:'NOTES 3'}]

      【讨论】:

        猜你喜欢
        • 2017-01-19
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 2021-09-06
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多