【问题标题】:Concatenating Multiple Javascript Objects Into One Object将多个 Javascript 对象连接成一个对象
【发布时间】:2018-07-03 16:14:41
【问题描述】:

我正在尝试将 javascript 对象全部添加到一个变量中,但不在同一个对象中。这就是我的意思:

object1 = {id: 1, name: Dean};
object2 = {id: 2, name: Sam};
object3 = {id: 3, name: Castiel};

我需要他们:

object1 = {id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel};

我目前正在从 ajax 调用中检索所有这些信息,需要循环访问它并将其返回到一个有效的 javascript 对象中,并将所有这些对象一次传递给一个变量:

var hierarchy;
for (i = 0; i < response['tree']['id'].length; i++) {

    hierarchy = $.extend(true, hierarchy, {
        id: response['tree']['id'][i],
        parentId: response['tree']['parentId'][i], 
        Name: response['tree']['name'][i]
    });
}

var orgchart = new getOrgChart(document.getElementById("cast"), {
    dataSource: [hierarchy]
});

主要目标:dataSource 属性需要以如下所示的值结束:

var orgchart = new getOrgChart(document.getElementById("cast"), {
    dataSource: [{id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel}]
});

编辑:解决方案,根据提供的答案,我修改了代码,现在它可以正常工作,我误解了控制台日志输出的内容与允许的语法。

var hierarchy = [];
for (i = 1;i < response['tree']['id'].length; i++) {

    groupData = {
        id: response['tree']['id'][i],
        parentId: response['tree']['parentId'][i], 
        Name: response['tree']['name'][i]
    };

    hierarchy.push(groupData);
}

var orgchart = new getOrgChart(document.getElementById("cast"), {
    dataSource: [{
        id: response['tree']['id'][0],
        parentId: response['tree']['parentId'][0], 
        Name: response['tree']['name'][0]
    }]
});

orgchart.loadFromJSON(hierarchy);

【问题讨论】:

  • object1 = {id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel};这是无效的JS。你可以objectArray = [{id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel}];。请注意,它现在是 Objects 的 Array []。可以在数组中使用push()。假设来自 AJAX 的数据是类似于 response.data.forEach((elem) =&gt; ObjectArray.push(elem)) 的伪数据。
  • 这是不可能的。您需要使用Array(对象类型)或通用Object。 JavaScript 变量不能包含多个值。
  • @Tyler 谢谢,没注意到不是英文的

标签: javascript jquery object orgchart


【解决方案1】:

我想指出下面的代码是无效的。

object1 = {id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel};

您应该使用一个数组来保存这些值,如下所示:

const objects = [{id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel}];

注意:您将能够使用 push() 将新对象添加到数组中。

【讨论】:

  • 谢谢!我已根据您为我澄清这一点提供的帮助更新了我的答案。我将控制台日志输出与正确的 javascript 语法混合在一起。
【解决方案2】:

因为我喜欢这个节目

var parent = { objectOne: { id: 1, name: 'Dean' },  objectTwo: { id: 2, name: 'Sam' },  object3: { id: 3, name: 'Castiel' } }

或者作为一个数组

var parent = [{ id: 1, name: 'Dean' }, { id: 2, name: 'Sam' }, { id: 3, name: 'Castiel' } ]

希望对你有帮助

【讨论】:

    【解决方案3】:

    您当前的我需要它们: 要求 无效 使用 Javascript。

    object1 = {id: 1, name: Dean}, {id: 2, name: Sam}, {id: 3, name: Castiel};
    

    你可以试试这个方法,

    var obj = {
      object1: {
        id: 1,
        name: 'Dean'
      },
      object2: {
        id: 2,
        name: 'Sam'
      },
      object3: {
        id: 3,
        name: 'Castiel'
      }
    };
    
    var allObj = [];
    
    // Populate allObj array
    for (var key in obj) {
      allObj.push(obj[key]);
    }
    console.log(allObj);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 2021-12-07
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2013-12-23
      相关资源
      最近更新 更多