我有一个ID为“流派”的多选列表项。在我的代码中,我获得了“流派”的价值,将其分开,然后遍历并将每个值添加到另一个数组。但出于某种原因,它增加了一个额外的条目。这里是我的代码:在javascript中添加一个额外时间的多个选择列表值
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()的入口,任何人都可以解释为什么是这样以及如何消除它?
为什么? (我并不是说你错了,但是这种陈述应该真的得到一个论证的支持,理想情况下,通过引用你的来源。) – 2012-03-06 20:13:32
for..in不应该用于遍历数组,其中索引顺序很重要。不能保证for ... in将以任何特定顺序返回索引,并且它将返回所有可枚举的属性,包括那些具有非整数名称和那些被继承的属性。由于迭代顺序是与实现相关的,迭代数组可能无法以一致的顺序访问元素。因此,在遍历访问顺序非常重要的数组上迭代时,最好使用带有数字索引的for循环。 〜MDN – 2012-03-06 20:16:07
第一个答案得到检查。谢谢,kirilloid。 – 2012-03-06 20:18:58