Array concat返回空数组

时间:2018-03-13 09:19:49

标签: javascript

我在事件处理程序中使用concat向数组中添加了几个项目,如下所示:

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

return {
    "selected" : selectedValues
};

总是返回{level-selected: Array(0)} 即使我已经检查item中有一些dataSource(通过调试器逐步执行)

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

2 个答案:

答案 0 :(得分:3)

concat不会改变数组,您需要将值设置回selectedValues

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

或使用push

selectedValues.push( item.id )

答案 1 :(得分:0)

具有讽刺意味的是,答案已经隐藏在你的问题中,更准确地在你的问题标题中。

实际上concat 返回你想要的正确的新数组......你只是从未使用过返回值!

您必须知道数组未在就地修改,但会返回一个新副本。

如果你想做任何事情,那么selectedValues.concat([ item.id ])应该被selectedValues = selectedValues.concat([ item.id ])取代。