2015-05-13 70 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