用.each函数替换for循环

时间:2016-06-07 14:42:55

标签: javascript jquery

如何用.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);
      }
  }

4 个答案:

答案 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