消除javascript数组中的元素

时间:2017-06-24 09:17:13

标签: javascript arrays

我给出了一个javascript数组,其中包含各种元素(字符串,数字,布尔值)的数量(未指定)。我需要消除字符串和布尔值。我该怎么办呢?我应该使用typeof吗?

4 个答案:

答案 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)

您可以使用typeofarray.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);