我在事件处理程序中使用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
(通过调试器逐步执行)
为什么这些项目不会出现在数组中?
答案 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 ])
取代。