可以将URL添加到jQuery数组并使用它进行一些检查
我对jQuery/JS很陌生。但我在jQuery中有一个循环,我想在其中进行一些检查。我想检查URL是否已打印。如果有必要,循环的数据来自JSON 基本上,我会有一个数组var=myArray,我会把循环中的所有URL放在这个数组中。我和每个人都经历了这个循环。然后每次我都会检查URL是否已经在数组中。作为赝品:可以将URL添加到jQuery数组并使用它进行一些检查,jquery,arrays,json,loops,each,Jquery,Arrays,Json,Loops,Each,我对jQuery/JS很陌生。但我在jQuery中有一个循环,我想在其中进行一些检查。我想检查URL是否已打印。如果有必要,循环的数据来自JSON 基本上,我会有一个数组var=myArray,我会把循环中的所有URL放在这个数组中。我和每个人都经历了这个循环。然后每次我都会检查URL是否已经在数组中。作为赝品: var myArray = []; each data { myArray.push({'url':data.url}); if data.url is alread
var myArray = [];
each data {
myArray.push({'url':data.url});
if data.url is already in myArray {
do stuff
}
if data.url is not already in myArray {
do other stuff
}
}
我用jQuery.inArray()玩aounrd,但我总是得到-1
谢谢你的帮助 只需直接推送url,而不是创建对象:
myArray.push(data.url);
然后jquery.inarray()
就可以正常工作了
if (jquery.inArray(data.url, myArray))
但是,您需要在循环的末尾而不是开始添加新的url,否则当您进行检查时,它们将始终位于数组中
演示:试试这个:
var myArray = [];
$.each(data, function(i,u) {
if($.inArray(u, myArray)){
//DO STUFF IF URL IN ARRAY
}else{
myArray.push(u);
//DO SUTFF IF URL NOT IN ARRAY
}
});
在伪代码中,在检查数组是否存在之前,您将其推送到数组,以便它始终存在。您需要推送
data.url
,而不是{'url':data.url}
您正在寻找的工作示例:
var testData = [ 1, 2, 2, 3, 4]
var myArray = []
jQuery.each( testData, function( pos, val ) {
// not in array
if ( jQuery.inArray( val, myArray ) == -1 ) {
myArray.push( val );
// in array
} else {
alert( "Already in [" + myArray + "] : " + val );
}
});
您还可以使用$.grep()
谢谢,是的,把信息推错地方是关键。
var myArray = [];
var ar = [{'url':'test1'},{'url':'test1'},{'url':'test3'}];
$.each(ar,function(ii,data) {
if ($.grep(myArray,function(e,i){ return e.url == data.url; }).length > 0) {
console.log('in array: ' + data.url);
} else {
console.log('not in array: ' + data.url);
}
myArray.push({'url': data.url });
});