XSLT或JavaScript - 删除重复项

时间:2013-06-19 12:21:49

标签: javascript arrays xslt distinct

我正在制作一个单选按钮列表,用于查看包含各个国家和相关区域的项目列表。下面是我的单选按钮的XSL

<xsl:template match="/">
    <div id="filter">
        <xsl:call-template name="container" />
    </div>
</xsl:template>


<xsl:template name="container">  
    <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/>    
      <xsl:for-each select="$Rows">
         <xsl:call-template name="group-items"/>
      </xsl:for-each>     
</xsl:template>

<xsl:template name="group-items">    
  <label class="region-filter-item" region="{@Region}">
    <input type="radio" name="region" class="regionbox">
      <xsl:value-of select="@Region"/>
    </input>
  </label>    

这会生成正确的数据,但它也会复制许多区域,因为如果一个区域中有15个国家/地区,则该区域将显示15次。

只展示一次每个地区的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我编写了一个JavaScript函数,将每个唯一项推送到一个数组中,然后使用该数组填充我的容器。全部解决了。感谢所有帮助人员:))

function removeDuplicates(){
var Array = new Array();
$('#filter > .filter-item').each(function(){
    var country = $(this).attr('country ');         
    if ( $.inArray(region, Array ) == -1 ) {
        Array .push(region);
    }
}); 
Array .sort();

var length = Array .length;
for (var i = 0; i < length; i++) {
    $('#filter-container').find('.container').append('<label class="filter-item" country="' + Array [i] + '">' 
                                                + '<input type="radio" name="country" class="checkbox">' 
                                                    + Array [i] + 
                                                '</input>' + 
                                        '</label> ');
    }

}