2 つの配列を含む JavaScript オブジェクトがあります。配列の 1 つが空である場合があります。再帰関数を使用してオブジェクトをループしようとしていますが、空または空の文字列である配列をループに入れたくありません。これまでのところ、エラーが発生していますTypeerror: obj.filter is not a function
。
注: この例の obj には内部に 2 つの配列がありますが、実際には、関数に渡すものであれば何でもかまいません。
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
});
}