用_.each()函数替换JavaScript for循环

时间:2015-02-08 03:55:24

标签: javascript for-loop underscore.js each

我正在尝试使用underscore.js each()函数替换JavaScript For循环。

for (var x = 0; x < count; x++) {
  slider[x].setAttribute('id', arguments[x]);
  sliderPagination[x].setAttribute('id', arguments[x]+'Pagination');

  // Initialise swiper
  var slider = new Slider('#'+arguments[x], {
    pagination: '#'+arguments[x]+'Pagination',
    loop:true,
    grabCursor: true,
    paginationClickable: true
  })
}

我是使用下划线的新手,所以不太确定最好的方法。使用_.each()函数时,我是否需要索引迭代?

更新

// Function to initialize multiple instances of slider plugin
function loadSliders(values) {

  var sliders = document.getElementsByClassName("swiper-container"),
      slidersPaginations = document.getElementsByClassName("swiper-pagination"),
      count = Math.min(sliders.length, arguments.length),
      i = 0;

  _.each(sliders, function(sliders, index) {
    var argumentsVariable = values[index];

    sliders.setAttribute('id', argumentsVariable);
    slidersPaginations[index].setAttribute('id', argumentsVariable+'Pagination');

    // Initialise swiper
    var slider = new Swiper('#'+argumentsVariable, {
      pagination: '#'+argumentsVariable+'Pagination',
      loop:true,
      grabCursor: true,
      paginationClickable: true
    })

  });

}

1 个答案:

答案 0 :(得分:2)

我假设您有3个阵列: - sliders - sliderPaginations - arguments

然后,你可以这样做:

_.each(sliders, function(slider, index) {
  var argumentsVariable = arguments[index];
  slider.setAttribute('id', argumentsVariable);
  sliderPaginations[index].setAttribute('id', argumentsVariable+'Pagination');

  // Initialise swiper
  var slider = new Slider('#'+argumentsVariable, {
    pagination: '#'+argumentsVariable+'Pagination',
    loop:true,
    grabCursor: true,
    paginationClickable: true
  })
}

请注意,您可以使用为每个数组定义的EcmaScript5 forEach方法:

sliders.forEach(function(slider, index) {
  var argumentsVariable = arguments[index];
  slider.setAttribute('id', argumentsVariable);
  sliderPagination.setAttribute('id', argumentsVariable+'Pagination');

  // Initialise swiper
  var slider = new Slider('#'+argumentsVariable, {
    pagination: '#'+argumentsVariable+'Pagination',
    loop:true,
    grabCursor: true,
    paginationClickable: true
  })
}