【问题标题】:Possible to add URL to jQuery array and do some checks with it可以将 URL 添加到 jQuery 数组并对其进行一些检查
【发布时间】:2012-04-18 03:16:38
【问题描述】:

我对 jQuery/JS 还是很陌生。但是我在 jQuery 中有循环,我想做一些检查。我想检查 URL 是否已经打印。如果重要的话,循环的数据来自 JSON。

基本上我会有一个数组 var = myArray ,我会在其中放置循环中的所有 URL。我每个人都会经历那个循环。然后每次我都会检查 URL 是否已经在数组中。作为伪:

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

感谢您的帮助!

【问题讨论】:

    标签: jquery arrays json loops each


    【解决方案1】:

    直接推送url而不是创建对象:

    myArray.push(data.url);
    

    那么jquery.inarray() 应该可以正常工作

    if (jquery.inArray(data.url, myArray))
    

    但是,您需要在循环的末尾而不是开头添加新的 url,否则当您检查时它们将始终在数组中。

    演示:http://jsfiddle.net/c2934/

    【讨论】:

      【解决方案2】:

      试试这个:

      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
         }
      });
      

      【讨论】:

        【解决方案3】:

        在您的伪代码中,您在检查它是否存在之前将其推送到数组,以便它始终存在。那你需要推送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 );        
            }    
        })​;​
        

        【讨论】:

        • 谢谢,是的,把信息推错地方是关键。
        【解决方案4】:

        你也可以使用 $.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 });
        });
        

        【讨论】:

          猜你喜欢
          • 2021-12-07
          • 1970-01-01
          • 2018-08-13
          • 2015-02-04
          • 1970-01-01
          • 2011-07-18
          • 1970-01-01
          • 2017-03-30
          • 1970-01-01
          相关资源
          最近更新 更多