Я добавляю несколько элементов в массив, используя 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 (с помощью отладчика)

Почему элементы не появляются в массиве?

7
Black 13 Мар 2018 в 12:19

2 ответа

Лучший ответ

concat не изменяет массив , вам нужно вернуть значение в selectedValues

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

Или используйте push

selectedValues.push( item.id )
6
gurvinder372 13 Мар 2018 в 09:20

По иронии судьбы, ответ уже был скрыт в вашем вопросе, точнее в названии вопроса.

На самом деле concat возвращает нужный вам новый массив ... вы просто никогда не использовали возвращаемое значение!

Вы должны знать, что массив не изменяется на месте , но возвращается его новая копия.

Поэтому selectedValues.concat([ item.id ]) следует заменить на selectedValues = selectedValues.concat([ item.id ]), если вы хотите что-то сделать.

0
Pac0 13 Мар 2018 в 09:23