我製作了一個通用函數filter(arr, func)
,它將使用給定函數作爲參數的數組進行過濾。只有那些func(elem)
返回true的元素才能組成一個新數組。boolean返回0或1與其他函數發生衝突
問題是如果數組項目小於10,則low function
返回true,如果數組項目是布爾值,則返回true。由於布爾值在JavaScript中返回1或0,這與我的low function
相沖突。
是他們的方式我可以阻止布爾值返回一個數字?或以某種方式保存布爾結果出來low function
var array = [4, 8, 'bob', true, 'stink', 55, false, 'pepo', 11];
function low(val) {
return val < 10;
}
function word(str) {
if(typeof str == 'string')
return true;
}
function bool(b) {
if (typeof b == 'boolean')
return true;
}
function filter(arr, func) {
var newArr = [];
for(var i = arr.length; i >= 0; i--) {
var result = func(arr[i]);
if(result == true) {
newArr.push(arr[i]);
}
}
return newArr;
}
alert(filter(array, low));
用typeof ...即進行比較時,你應該使用三個===如果(typeof運算myVar的=== 「未定義」) {...} –
'val <10'將始終爲「true」或「false」,而不是「1」或「0」。 –