Javascript 数组concat返回空数组
我在事件处理程序中使用Javascript 数组concat返回空数组,javascript,Javascript,我在事件处理程序中使用concat向数组添加了几个项,如下所示: var selectedValues = []; $.each($('#selected-levels').data("kendoListBox").dataSource.data(), function(i, item) { selectedValues.concat([ item.id ]) }); return { "selected" : selectedValues }; 这总是返回{level se
concat
向数组添加了几个项,如下所示:
var selectedValues = [];
$.each($('#selected-levels').data("kendoListBox").dataSource.data(), function(i, item) {
selectedValues.concat([ item.id ])
});
return {
"selected" : selectedValues
};
这总是返回{level selected:Array(0)}
尽管我已经检查了数据源
中是否有一些项
(通过使用调试器逐步执行)
为什么项目不出现在数组中?
concat
不会改变数组,您需要将值设置回selectedValues
selectedValues = selectedValues.concat([ item.id ])
或者使用push
selectedValues.push( item.id )
具有讽刺意味的是,答案已经隐藏在你的问题中,更确切地说,隐藏在你的问题标题中 实际上,concat返回您想要的正确的新数组。。。您只是从未使用过返回值 您必须知道,阵列没有进行适当的修改,但会返回一个新的副本 因此,如果要执行任何操作,则应将
selectedValues.concat([item.id])
替换为selectedValues=selectedValues.concat([item.id])