0

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

我有以下数组:

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'}

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

提前非常感谢!

4

3 回答 3

1

首先, allBoards 应该是:

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

之间的一切都{}被认为是对象。在里面[]是什么使它成为这些对象的数组。这使它成为对象 {} 的数组 []。allHotSpots应该以同样的方式完成。

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

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,那么您只是在存储引用,而不是数组的副本。如果这是你经常做的事情,你可能会更好地创建一个克隆方法。

于 2013-04-22T16:16:31.767 回答
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);
于 2013-04-22T17:18:45.613 回答
-1

你有没有尝试过

projectSave.boards= allBoards;
projectSave.hotspots=allHotspots;
于 2013-04-22T16:07:59.200 回答