数组拼接返回空数组

8

我正在使用以下方式在事件处理程序中使用concat将多个项目添加到数组中:

var selectedValues = [];
$.each($('#selected-levels').data("kendoListBox").dataSource.data(), function(i, item) {
    selectedValues.concat([ item.id ])
});

return {
    "selected" : selectedValues
};

无论如何,这总是返回{level-selected: Array(0)},尽管我已经使用调试器检查了dataSource中是否有一些item

为什么这些项不会出现在数组中?

2个回答

20

concat 不会改变原来的数组,你需要把值重新赋回 selectedValues

selectedValues = selectedValues.concat([ item.id ])

或者使用push

selectedValues.push( item.id )

1
讽刺的是,答案已经隐藏在你的问题中,在你的问题标题中更确切地说。
实际上,concat函数返回了你想要的正确的新数组... 你只是从未使用过返回值!
你必须意识到数组并没有被原地修改,而是返回了一个全新的副本。
因此,如果你想做任何事情,selectedValues.concat([ item.id ]) 应该被替换为 selectedValues = selectedValues.concat([ item.id ])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接