2012-03-07 66 views
0

的陣列之間的區分,我有兩個數組:數組的數組和值

var firstarray = [123, 13, 34, 12, 63, 63]; 

var secondarray = [[10,20,10], [122, 123, 53], [542, 234, 12, 331]]; 

我需要的作品是這樣一個功能:

function checkArray(array){ 
    //if array contains multiple arrays, return true 
    //if the array contains only values, return false 
} 

陣列的內部secondarray總數量變化。

+0

你應該標記這個作業嗎? – 2012-03-07 09:19:45

+0

這不是作業 – tamarasaurus 2012-03-07 09:21:08

回答

4

提示:在第一個數組上循環並確定您正在讀取的某個對象是否爲數組。

這裏是一個功能,可以幫助您:

function is_array(input){ 
    return typeof(input)=='object'&&(input instanceof Array); 
} 
+0

寫一個適當的「isArray」函數並不像看起來那麼簡單,請參閱[this thread](http://stackoverflow.com/questions/4775722/javascript-check-if-object-is-數組)的細節。 – georg 2012-03-07 09:36:21

+0

-1:不幸的是,沒有回答這個問題。首先請求是發現數組是否包含更多數組或僅包含原始值。它也不適用於給定的數據,因爲'Array(1,2,3)instanceof Array'爲'true',但'[1,2,3] instanceof Array'爲'false'。 – Borodin 2012-03-07 09:36:49

+0

@Borodin我沒有給出答案,只是一個提示。你可以看到http://jsfiddle.net/4g3B7/1/這個函數可以工作。並且FYI'[1,2,3] instanceof數組返回'true' – 2012-03-07 09:53:14

0

檢查數組中的第一個元素的類型:

function checkArray(list) { 
    return typeof(list[0]) == "object"; 
} 
1

主要問題這是在JavaScript typeof anArrayVariable回報object一樣typeof aRealObject - 所以有沒有簡單的方法來區分它們。

jQuery通過方法$.isArray()在某種程度上修復了這個問題,它正確地爲數組返回true,在對象,數字,字符串或布爾值中返回false。

function checkArray(array){ 
    //if array contains multiple arrays, return true 
    //if the array contains only values, return false 

    for(var i=0;i<array.length;i++){ 
     if($.isArray(array[i])) 
      return true; 
    } 
    return false; 
} 

我建議你可以看看在源在jQuery的表示方法與實施香草JavaScript本同樣的想法:

因此,使用jQuery本作變得容易。