【问题标题】:Javascript search for string match and display no duplicatesJavascript 搜索字符串匹配并且不显示重复项
【发布时间】:2014-06-02 22:33:21
【问题描述】:

这是我的 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 中,然后在匹配时显示。结果有重复,因为它会出现“over”或“moon”

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

我的目标结果是删除重复项...对于这个例子,删除“The cow jump over the moon”

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

如何通过“over”和“moon”进行搜索,如果匹配,则不显示重复项。

【问题讨论】:

    标签: javascript xml match indexof


    【解决方案1】:

    我会做不同的。我会使用 jquery 来获取我需要的元素,然后你可以根据需要输出它们。 filter 函数检查每个元素以匹配过滤词。这样你就不会有重复,因为它只迭代每个元素一次(内部可能更多由于 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;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2014-12-17
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      相关资源
      最近更新 更多