JS / jQuery将数组合并到另一个数组的对象中

时间:2013-04-22 16:02:47

标签: javascript jquery arrays merge

如何将数组添加到另一个数组的对象中?

我有以下数组:

projectSave = ({ id: 1, name: 'Foo', desc: 'Bar', boards: {}, hotspots {} });

我想用来自单独数组的数据填充主板热点对象。

allBoards = {id: 'b1, name: 'Board 1'; id: 'b2, name: 'Board 2'}
allHotspots = {id: 'h1, type: 'link'; id: 'h2, type: 'link'}

如何将数据填充到数组的对象中?

提前多多感谢!

3 个答案:

答案 0 :(得分:1)

首先,allBoards应该是:

allBoards = [{id: 'b1, name: 'Board 1'}, {id: 'b2, name: 'Board 2'}]; 

{}之间的所有内容都被视为对象。 []内部是使它成为这些对象的数组的原因。这使它成为对象{}的数组[]。 allHotSpots应该以同样的方式完成。

您必须遍历数组并重新创建projectSave的对象,并将它们添加到boardshotspots数组中。

for (var i = 0; i<allBoards.length; i++){
  projectSave.boards.push({id: allBoards[i].id,
                name: allBoards[i].name});

}
for (var i = 0; i<allHotspots .length; i++){
  projectSave.hotspots .push({id: allHotspots [i].id,
                type: allHotspots [i].type});
}

如果您只是尝试设置projectSave.boards = allBoards,那么您只是存储引用,而不是数组的副本。如果您经常这样做,那么创建克隆方法可能会更好。

答案 1 :(得分:0)

我不禁注意到你的代码中有语法错误,字符串未正确关闭,半冒号用作数组分隔符而不是逗号,而某些属性应该是数组而不是对象(我假设是你的意图),所以我也纠正了它们。

由于你还将它标记为jQuery,并且万一你的对象逐渐变得更复杂,这里有一个jQuery方法。

var projectSave = { id: 1, name: 'Foo', desc: 'Bar', boards: [], hotspots: [] };

var allBoards = [{id: 'b1', name: 'Board 1'}, {id: 'b2', name: 'Board 2'}];

var allHotspots = [{id: 'h1', type: 'link'}, {id: 'h2', type: 'link'}];


$.extend(true, projectSave, {
    boards: allBoards,
    hotspots: allHotspots
});

// Test
console.info(projectSave);

答案 2 :(得分:-1)

你试过吗

projectSave.boards= allBoards;
projectSave.hotspots=allHotspots;