【问题标题】:Add duplicate elements?添加重复元素?
【发布时间】:2012-03-05 20:04:31
【问题描述】:

使用 jQuery 可以做到这一点吗?

假设我有一个项目列表,附加值例如:

  1. 项目1:5
  2. 项目2:10
  3. 项目3:20
  4. 项目2:15
  5. 项目4:30
  6. 项目2:25
  7. 项目1:11

如何删除所有重复项并将删除的重复项中的整数添加到一个条目中,并使用 jQuery 输出这样的输出:

  1. 项目1:16
  2. 项目2:50
  3. 项目3:20
  4. 项目4:30

编辑:我找到了一个使用 $.each 删除重复项的函数,但我不知道从这里到哪里存储每次迭代的值并修改原始项目的 DOM。

var seen = {};
$('.variety_name').each(function() {
    var txt = $(this).text();
    if (seen[txt])
        $(this).parent().remove();
    else
        seen[txt] = true;
});

【问题讨论】:

  • 你试过什么?也许 WWW.Do-The-Job-For-Me.com 可以帮助你更多...跨度>
  • 几乎可以肯定。写一些代码。
  • 我不确定是否有快捷方式,但您可以创建一个新数组,在循环输入数组时将任何现有元素添加到值中。这只是 javascript,而不是真正的 jQuery。
  • @gdoron 不错的网站,我一直在用它
  • 构建一个二维数组并在循环遍历原始数组时对其进行更新。

标签: jquery


【解决方案1】:

对您提供的代码进行简单修改(对 html 进行假设):

<li class="item"><span class="name">Item1</span>: <span class="value">5</span></li>
<li class="item"><span class="name">Item2</span>: <span class="value">10</span></li>
<li class="item"><span class="name">Item3</span>: <span class="value">20</span></li>
<li class="item"><span class="name">Item2</span>: <span class="value">15</span></li>
<li class="item"><span class="name">Item4</span>: <span class="value">30</span></li>
<li class="item"><span class="name">Item2</span>: <span class="value">25</span></li>
<li class="item"><span class="name">Item1</span>: <span class="value">11</span></li>

 

var seen = {};
$('.name').each( function() {
      var txt = $(this).text();
      if (seen[txt] == undefined) {
          seen[txt] = $(this);
      } else {
          var val = seen[txt].next('.value');
          val.text( parseInt( val.text() ) + parseInt( $(this).next('.value').text() ) );
          $(this).parent().remove();
      }
});

当您没有看到某个项目时,将该对象存储在seen 中。看到后,将当前项的值添加到存储对象的值中,然后删除当前项。

示例:http://jsfiddle.net/JyGc9/

【讨论】:

    【解决方案2】:

    我不知道是否有直接的方法可以做到这一点,但我可以写一些东西来完成它,我可以使用哈希列表(表)或将结果直接注入 dom;我将使用哈希列表: 我可以将我的 HTML 格式化为:

    <ol id="mainList">
      <li><input type="hidden" value="5" name="item1"/> Item1: 5</li>
      <li><input type="hidden" value="10" name="item2"/> Item2: 10</li>
      <li><input type="hidden" value="20" name="item3"/> Item3: 20</li>
      <li><input type="hidden" value="15" name="item2"/> Item2: 15</li>
      ...
    </ol>
    

    还有我的脚本:

    function addDuplicates (){
      var main_list = $('#mainList') 
    // Calculate the result list of items
      var item_list = main_list .find('input');
      var result = {}
      item_list.each(function (index){
        var list_name = $(this).attr('name')
        var list_val = $(this).val()
        if (typeOf(result[list_name])=='undefined')
          result[list_name]=list_val
        else
          result[list_name]=result[list_name]+list_val    
      });
    
    // render the result list
      main_list.empty();
      $.each (result, function (index){
        main_list.append('<li><input type="hidden" value="'+result[index]+'" name="'+index+'"/>'+index+': '+result[index]+'</li>')
      }) 
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2023-03-08
      • 2019-03-23
      • 2021-12-02
      • 2012-10-25
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多