2013-08-22 13 views
0

如何確定數組是否包含元素,如果未定義該數組,則返回false?我可以檢查數組是否包含元素的最簡單方法是什麼?

我有陣列modal.questions

我用modal.questions.length但現在這似乎如果沒有定義的問題是一個問題。

有沒有一種方法可以使用_underscore.js的libray函數或簡單的方法來編寫一個函數來進行檢查?

+0

@Felix王是相似但不完全相同的副本涉嫌重複的問題考慮長度爲零數組有效。目前的問題沒有。檢測零長度數組需要更深奧的Javascript,比如instanceOf – Paul

+0

@Melina - 或者實際上,您的問題可能會含糊不清。你知道你可以有一個完美定義的數組,它是空的,比如'A = [];'。你想用「真」還是「虛」? – Paul

回答

1
function isEmpty(theArray) { 
    return theArray == null || theArray.length <= 0; 
} 
+0

這不工作,如果我通過一個null – bhb

0

檢查if(modal.questions === undefined)首先,然後做你的長度檢查。

注意:在一些較舊的瀏覽器中,可能會覆蓋undefined的值。在這種情況下,安全檢查將爲if(modal.questions === void 0),因爲void 0將返回實際的undefined值。但是,如果你正在瞄準現代瀏覽器,你不必擔心這一點。

+1

如果數組爲空,或者由於某種原因它不是數組,則檢查長度可能會引發錯誤。 – Paul

0

嘗試這樣的:

if (typeof array !== 'undefined' && array.length > 0) { 
    // existss and have one item 
} 
+0

當'數組=空'它拋出'TypeError無法讀取屬性'空'的空' – Paul

2

if(modal.questions && modal.questions.length > 0) {}

應該工作。

0

這適用於所有的瀏覽器

if(!Array.isArray) { 
    Array.isArray = function (vArg) { 
    return Object.prototype.toString.call(vArg) === "[object Array]"; 
    }; 
} 

//add length check also here 
function isEmpty(theArray) { 
    return Array.isArray(theArray)  
} 

var a = new Array(); 
var b = null; 
var c = undefined; 
var d = []; 

alert(isEmpty(a)); //true 
alert(isEmpty(b)); //false 
alert(isEmpty(c)); //false 
alert(isEmpty(d)); //true 

JSFiddle

Source :)

相關問題