Я добавляю несколько элементов в массив, используя 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 ответа
concat
не изменяет массив , вам нужно вернуть значение в selectedValues
selectedValues = selectedValues.concat([ item.id ])
Или используйте push
selectedValues.push( item.id )
По иронии судьбы, ответ уже был скрыт в вашем вопросе, точнее в названии вопроса.
На самом деле concat возвращает нужный вам новый массив ... вы просто никогда не использовали возвращаемое значение!
Вы должны знать, что массив не изменяется на месте , но возвращается его новая копия.
Поэтому selectedValues.concat([ item.id ])
следует заменить на selectedValues = selectedValues.concat([ item.id ])
, если вы хотите что-то сделать.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.