我有一個包含兩個數組的javascript對象。有時候其中一個數組可能是空的。我試圖循環通過遞歸函數的對象,但我不希望任何數組是空的或空字符串進入循環。我到目前爲止所產生的錯誤是Typeerror: obj.filter is not a function
。如何從javascript對象中刪除空值
注意:obj在這個例子裏面有兩個數組,但實際上,它可以是我傳入函數的任何東西。
var obj = {
selected: [ "value1", "value"2],
unselected: []
}
function clearAndSetSelectElement($elem, obj, isEmpty) {
if(isEmpty) $elem.empty(); //empty the select element if it isn't empty
$.each(obj.filter(function(v){return v != null}), function() { //filter out empty arrays or empty strings
if(this instanceof Array) clearAndSetSelectElement($elem, this, false); //if this is an array make recursive call
$elem.append("<option />").val(this).text(this)); //append value to select element
});
}
我認爲你最好使用jQuery的$ .filter()(http://api.jquery.com/filter/)方法,該方法適用於所有瀏覽器。 – Andy 2012-07-27 13:46:03