2015-05-13 44 views
0

我有这个jQuery阵列如何迭代jquery上的多阵列?

Jquery Object

我想重复它,但我总是只得到第一个值假,假]和循环结束

我使用此功能迭代

function CompareAndShowOrHide(url) { 
    var elem = jQuery(".vanessa_content .block-title"); 
    $.each(url_array , function(index, obj) { 
     $.each(obj, function(key, value) { 
      console.log(key); 
      console.log(value); 
     }); 
    }); 
} 

没有成功,任何帮助,将不胜感激感谢

的jsfiddle - >https://jsfiddle.net/xvcg0spz/

+0

你的jsfiddle似乎有点不完整。一般来说,$(obj).each(function(){})是我用jquery的语法。我无法分辨你的函数希望做什么,因为你传递的url参数没有在函数中使用。 –

+0

尚未完成,我现在更担心数组迭代,我只是想比较实际的url与数组中的数据@JECarterII –

+0

好的,在这种情况下,您可能希望以某种方式使用传入url参数。我没有看到它在你的CompareAndShowOrHide函数中被引用。 –

回答

0

您声明url_array作为数组,

var url_array = []; 

但并不使用它作为一个。数组采用数字索引,JavaScript没有关联数组(将字符串作为索引的数组)。

这样算下来以下:

url_array['/'] = [false, false]; 
url_array['/cart'] = [true, false]; 
url_array['/checkout/34'] = [true, false]; 

您数组对象上设置属性,并且不添加任何东西到阵列。所以你的数组是空的。由于它是一个数组的实例,所以jQuery将会这样对待它,并尝试访问数组元素而不是你设置的属性。

简单地声明url_array作为对象,而不是和jQuery将正确地遍历属性

var url_array = {}; //you should probably rename it since its not really an array 

演示

var url_array = {}; 
 
url_array['/'] = [false, false]; 
 
url_array['/cart'] = [true, false]; 
 
url_array['/checkout/34'] = [true, false]; 
 
url_array['/user/register'] = [true, true]; 
 
url_array['/checkout/34/checkout'] = [true, false]; 
 
url_array['/checkout/34/review'] = [true, false]; 
 
url_array['/product-categories/aaaa11'] = [false, false]; 
 
url_array['/product/54/38'] = [false,false]; 
 
url_array['/our-stores'] = [true,false]; 
 
url_array['/user'] = [true,true]; 
 
url_array['/news'] = [false,false]; 
 
url_array['/Shows'] = [false,false]; 
 
url_array['/content/Biography'] = [false,false]; 
 

 
function CompareAndShowOrHide(url) { 
 
    $.each(url_array , function(index, obj) { 
 
    $.each(obj, function(key, value) { 
 
     console.log(key); 
 
     console.log(value); 
 
    }); 
 
    }); 
 
} 
 
CompareAndShowOrHide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

的问题,基本上是,jQuery的.each将url_array视为一个数组,因为这就是如此你定义了它。但它将它视为一个长度为0的数组,因此它永远不会反复进行任何操作。

您存储在那里的值与数组的属性相关联 - 它们不是数组元素与您对它们的想法。您可能想要查看JavaScript中的关联数组。

虽然有一个简单的解决方案。你只需要将你的“数组”定义为真正的对象。

var url_array = {}; 

你会再对它们进行迭代与jQuery.each的对象版本:

$.each(url_array, function(key, value) { 

    }); 

this fiddle