Javascript搜索字符串匹配并显示没有重复项

时间:2014-06-02 14:21:49

标签: javascript xml match indexof

这是我的XML

<document>
    <item>
    <my_summary>The cow jump over the moon</my_summary>
    </item>
    <item>
    <my_summary>Pepper piper keeper moon</my_summary>
    </item>
    <item>
    <my_summary>The swan flew jump the lake</my_summary>
    </item>
    <item>
    <my_summary>moon stars blue yellow</my_summary>
    </item>
    </document>

这是我的javascript循环代码

var count_my_summary =xmlDoc.getElementsByTagName("item");
var keywords = "Over moon";
var filtered_array_exclude = keywords.match(/\w+/g).map(function(i) {return i.toLowerCase();}).filter(function(i) { return exclusionlist.indexOf(i) == -1; }) 
var filtered_array = new removeDuplicateElement(filtered_array_exclude);


for (xml_i=0;xml_i<count_my_summary.length;xml_i++){ 
     for (var i = 0; i < filtered_array.length; i++) {
        var xml_summary_lowercase = count_my_summary[xml_i].getElementsByTagName("my_summary")[0].childNodes[0].nodeValue.toLowerCase();
        var result = xml_summary_lowercase.indexOf(keyword,0);
        if (result > -1) {
        document.write(my_summary + "<br><br>");
        } else {
        document.write("");
        }
    }   
  }
}

此代码的结果将循环到my_summary中,然后在匹配时显示。结果重复,因为它会在&#34; over&#34;或者&#34;月亮&#34;

The cow jump over the moon - for "over" match
The cow jump over the moon - for "moon" match
Pepper piper keeper moon - for "moon" match
moon stars blue yellow - for "moon" match

我的目标结果是删除重复...这个例子删除&#34;牛跳过月亮&#34;

The cow jump over the moon - for "over " and "moon" match
Pepper piper keeper moon - for "moon" match
moon stars blue yellow - for "moon" match

如何通过&#34; over&#34;进行搜索?和&#34;月亮&#34;如果匹配,则不显示副本。

1 个答案:

答案 0 :(得分:0)

我会以不同的方式完成它。我会使用jquery来获取我需要的元素,然后你就可以输出它们了。过滤器函数检查每个元素以匹配过滤词。这样你就不会有重复,因为它只迭代每个元素一次(内部可能更多,因为for循环)

var filterString = "moon over";
var filterArr = filterString.split(" ");

$(xmlDoc).find("my_summary").filter(function(){
for(var str in filterArr){
if ($(this).text().search(str) > -1)
return true;
}
return false;
});