如何用.each函数替换for循环?
function addOptionsToSelect(placeElement, placeData){
placeData.sort(comparePlaces);
placeElement.empty();
for(var i = 0; i < placeData.length; i++ ){
var place = placeData[i];
var option = $("<option>"+ place.name +"</option>").attr("value", place.code)
placeElement.append(option);
}
}
答案 0 :(得分:1)
您可以使用Array#forEach
,一种原生的ES5方法。
forEach()
方法为每个数组元素执行一次提供的函数。
function addOptionsToSelect(placeElement, placeData){
placeData.sort(comparePlaces);
placeElement.empty();
placeData.forEach(function (place) {
var option = $("<option>"+ place.name +"</option>").attr("value", place.code);
placeElement.append(option);
});
}
答案 1 :(得分:1)
DOM操作很昂贵。因此,创建整个选项集并立即添加
function addOptionsToSelect(placeElement, placeData){
placeData.sort(comparePlaces);
placeElement.empty();
var option ="";
placeData.forEach(function(item){
option+ = $("<option>"+ item.name +"</option>").attr("value", item.code)
})
placeElement.append(option);
}
答案 2 :(得分:0)
一个简单的 foreach 语法应该可以胜任。 Javascript语法使用简单的&#34; 用于&#34;包括你的对象键:
function addOptionsToSelect(placeElement, placeData){
placeData.sort(comparePlaces);
placeElement.empty();
for(var key in placeData)
{
place = placeData[key]
var option = $("<option>"+ place.name +"</option>").attr("value", place.code)
placeElement.append(option);
}
}
答案 3 :(得分:0)
实际上没有人发布它,人们似乎决定回答这个问题,所以为了完整起见,这是一个使用jQuery.each
的版本:
function addOptionsToSelect(placeElement, placeData) {
placeData.sort(comparePlaces);
placeElement.empty();
jQuery.each(placeData, function(_, place) { // Or $.each if $ == jQuery
var option = $("<option>" + place.name + "</option>").attr("value", place.code)
placeElement.append(option);
});
}
请注意,第一个参数是条目的索引;条目本身是第二个参数(也是this
)。因此function(_, place)
我们不会使用_
参数(_
是JavaScript中的有效标识符)。
但我会使用Array#forEach
(必要时调整)代替as Nina suggested或任何the many other ways to loop through arrays。