【问题标题】:Skip the same element appended from loop跳过从循环中附加的相同元素
【发布时间】:2013-12-17 20:07:06
【问题描述】:

我有脚本通过回调加载数据,例如:

for(i = 0; i < allposts.length; i++){
    ....
    if ((i >= 0) && (i < 3)) {
        a += '<li><a href="'+link+'">'+post-title+'</a></li>';
    } 
}
list = a;
document.getElementById('portfolio-list').innerHTML += list;

当 for 循环结束时,它将追加 3 个帖子。这意味着,我们拥有的每个循环都喜欢:

<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>

对于 2 个循环(使用 += list),例如我有:

<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>

<li><a href="link2">title2</a></li>
<li><a href="link4">title4</a></li>
<li><a href="link5">title4</a></li>

您可以看到:link2 is repeated。我想抓住每个循环并在重复时中断。

这意味着我有这样的结果:

<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>

<li><a href="link4">title4</a></li>
<li><a href="link5">title5</a></li>

如何使用 Javascript 做到这一点?

【问题讨论】:

  • c 变量在哪里?这导致打印链接1等。
  • 将已经显示的链接存储在一个数组中,并在添加到输出之前检查该数组中是否包含新链接。
  • @dbasic:对不起。它不是数组。已更新。
  • @CMate:在下面给出你的答案
  • 我在回答中描述了我的想法。

标签: javascript html loops append


【解决方案1】:

试试这个,我不知道你是如何更新c变量

var temp =[];
for(i = 0; i < allposts.length; i++){
    ....
    if ((i >= 0) && (i < 3)) {
        if(temp.indexOf(link) == -1)
        {
          a += '<li><a href="'+link+'">'+post-title+'</a></li>';
           temp.push(link);
        }

    } 
}

【讨论】:

    【解决方案2】:

    这是我之前在评论中想到的一个模板:

    var shownLinks = [];
    for(i = 0; i < allposts.length; i++){
        ....
        if ((i >= 0) && (i < 3)) {
            // Only show a link, if it wasn't before
            if(shownLinks.indexOf(link) == -1) {
                a += '<li><a href="'+link+'">'+post-title+'</a></li>';
                // Add the link to the array
                shownLinks.push(link);
            }
        } 
    }
    list = a;
    document.getElementById('portfolio-list').innerHTML += list;
    

    【讨论】:

      【解决方案3】:
      var links = {};
      for(i = 0; i < allposts.length; i++){
          ....
          if ((i >= 0) && (i < 3) && !links[link]) {
              a += '<li><a href="'+link+'">'+post-title+'</a></li>';
              links[link] = true;
          } 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 2012-03-12
        • 2019-07-16
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        相关资源
        最近更新 更多