[英]how to filter rss data against javascript array
我使用以下代碼查找那些不在我的監視列表(項目數組列表)中的項目。 但是每當我運行這段代碼時, 瀏覽器就會凍結 。 如果我刪除了最后一個其他部分,則程序運行正常,並從rss feed中的監視列表中打印項目。
誰能告訴我我的其他部分出了什么毛病, 原因是它不打印在監視列表中找不到的項目?我的目標是只能從rss feed中打印那些不在監視列表數組中的項目。數組中有大約700個項目,而rss大約有1000個項目!
<script>
$.getJSON('http://anyorigin.com/get?url=http://www.somesite.com/rss.php&callback=?', function(data){
var p=0;
var siteContents = data.contents;
var parser=new DOMParser();
xmlDoc=parser.parseFromString(siteContents,"text/xml");
var items = xmlDoc.getElementsByTagName("item");
for(i = 0; i < items.length; i++)
{
document.myform2.outputtext2.value +=items[i].getElementsByTagName("itemname")[0].childNodes[0].nodeValue+"\n";
var myVariable =items[i].getElementsByTagName("itemname")[0].childNodes[0].nodeValue;
items=["mango","apple","orange","banana","book","pen"];
for (var m=0;m<items.length;m++)
{
if (myVariable == items[m])
//if (items[m] == myVariable)
{
//do nothing
p++;
document.myform3.outputtext3.value +=myVariable+"\n";
}
else
{
//alert (myVariable);
document.myform4.outputtext4.value +=myVariable+"\n";
};
};
};//end of outer for
});
</script>
你的邏輯倒過來了。 您當前的腳本(帶有else
語句)在每次不等於監視列表中的一項時都會打印項目-每個項目的打印次數與您的監視列表長一樣多; 在該輸出中產生700000行!
您必須將該條件移出循環。 偽代碼:
found = false
foreach item in watchlist
if item == myvariable // the one you're searching for
found = true
break
if found
then putItSomewhere()
else putItSomewhereElse()
在實際的腳本中,您不會使用循環,而只會使用indexOf
Array方法 :
if (items.indexOf(myVariable) == -1) {
// not found, so output it
document.myform4.outputtext4.value +=myVariable+"\n";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.