您声明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>
你的jsfiddle似乎有点不完整。一般来说,$(obj).each(function(){})是我用jquery的语法。我无法分辨你的函数希望做什么,因为你传递的url参数没有在函数中使用。 –
尚未完成,我现在更担心数组迭代,我只是想比较实际的url与数组中的数据@JECarterII –
好的,在这种情况下,您可能希望以某种方式使用传入url参数。我没有看到它在你的CompareAndShowOrHide函数中被引用。 –