我有一个id为“genres”的多选列表项。在我的代码中,我得到“genres”的值,拆分它,然后迭代并将每个值添加到另一个数组。但由于某种原因,它增加了一个额外的条目。这是我的代码:
if ($("#genres").val()!=null) {
var genres = $("#genres").val().toString().split(",");
for (var i in genres) {
model.TitleGenres.push({ GenreId: genres[i] });
}
}
变量model.TitleGenres初始化为[];
当我在Firebug中调试它时,我得到的值是:
genres: [ "6", "1770" ]
在循环结束时,我得到:
model.TitleGenres: [Object { GenreId="6"}, Object { GenreId="1770"}, Object { GenreId=function()}]
我不知道为什么有一个额外的GenreId = function()条目,有人可以解释为什么会这样,以及如何消除它?
答案 0 :(得分:2)
不要使用for in
在JS中迭代(数字索引)数组。
使用for (var i = 0, len = array.length; i < len; i++) { ... }
答案 1 :(得分:2)
它导致您使用'for in'而非foreach
或simpley for
迭代数组。使用for in
迭代数组对象的所有成员,或者在本例中为jquery对象。似乎其中一个是一个功能。请改用genres.each()
。
答案 2 :(得分:0)
这个怎么样:
var x = [];
$('#genres option:selected').each( function() { x.push($(this).val()) } );
现在“x”将包含所有选定的值。