我给出了一个javascript数组,其中包含各种元素(字符串,数字,布尔值)的数量(未指定)。我需要消除字符串和布尔值。我该怎么办呢?我应该使用typeof
吗?
答案 0 :(得分:1)
我应该使用
typeof
吗?
是的,您应该在测试不平等时用逻辑AND链接条件。
var array = [NaN, 0, '0', undefined, null, false];
array = array.filter(function (a) {
return typeof a !== 'string' && typeof a !== 'boolean';
});
console.log(array);

答案 1 :(得分:0)
您可以在typeof
方法回调中使用filter()
运算符,例如:
const myArray = [1,'foo',{name:'bar'},true];
myArray.filter(e => typeof e !== 'string' && typeof e !== 'boolean');
答案 2 :(得分:0)
您可以使用typeof
和array.filter()
功能
var getNone = x => typeof x !== 'string' && typeof x !=='boolean';
var arr = ['henry',true,1,0,5,'charles',false].filter(getNone);
console.log(arr);
答案 3 :(得分:0)
如果您经常使用这种过滤,则可以创建泛型类型过滤方法。该方法将接收asms,isType方法用于将被过滤掉的类型。
const array = [NaN, 0, 'string', undefined, null, false];
const isType = (type) => (v) => typeof v === type; // generic type method using partial application
const isString = isType('string'); // detects strings
const isBoolean = isType('boolean'); // detects booleans
const filterTypes = (arr, ...typesToFilter) =>
arr.filter((v) => !typesToFilter.some((isType) => isType(v))); // remove all items that are of one of the typesToFilter
const result = filterTypes(array, isString, isBoolean);
console.log(result);