根据数组中的数据以特定顺序从数组输出数据

时间:2015-02-06 15:39:36

标签: javascript jquery arrays

我将列表项推送到一个数组中,它们具有数据排序值。当我们从数组中调用它们时,我需要以数据排序顺序输出它们,其中1将首先出现,2秒,依此类推。 然而如果数据排序等于0,我需要做一些与项目完全不同的事情。

JS

var arr = [];
$('ul li').each(function() {
  arr.push($(this));
});

$('ul.main').html('');
$.each(arr, function (i) {
  var item = arr[i];
  var content = $(item).html();
  var itemSort = $(item).data('sort'); //Need to sort by this value
  if(itemSort != '0') {
    $('ul.main').append('<li>' + content + '</li>')
  } else {
    $('.another-list').append('<li>' + content + '</li>'); // Sort order of 0's doesn't matter
  }
});

HTML

<ul class="main">
  <li data-sort="3">Item 1</li>
  <li data-sort="2">Item 2</li>
  <li data-sort="1">Item 3</li>
  <li data-sort="0">Item 4</li>
</ul>
<ul class="another-list"></ul>

1 个答案:

答案 0 :(得分:3)

需要从所选元素创建数组是多余的,因为jQuery对象所选元素的数组。

此外,需要获取html()的{​​{1}},然后在全新的li中创建它是多余的,因为您可以通过使用仅将元素从一个列表移动到另一个列表li

考虑到这一点,您可以使用append()sort()的组合来大规模简化代码:

filter()

Example fiddle