如何在javascript中过滤数组?

时间:2017-08-28 09:47:51

标签: javascript arrays filter

这是一个数组,

total = ["10%", 1000, "5%", 2000]。如何使用javascript数组过滤器将这些过滤为两个数组,例如,百分比= [" 10%",#34; 5%"]和绝对= [1000,2000]。

7 个答案:

答案 0 :(得分:5)

您应该使用filter方法,该方法接受callback函数。

  

filter()方法创建一个包含所有传递元素的新数组   由提供的函数实现的测试。

另外,使用typeof 运算符以便从数组中找出项目的类型。 typeof 运算符返回一个字符串,指示未评估的操作数的类型。

let total = ["10%", "1000", "5%", "2000"];
let percentage=total.filter(function(item){
  return typeof item == 'string' && item.includes('%');
});
console.log(percentage);
let absolute=total.filter(function(item){
  return typeof item == 'number' || !isNaN(item);
});
console.log(absolute);

答案 1 :(得分:1)



let total = ["10%", 1000, "5%", 2000];

let percents = total.filter(item => item.toString().includes('%'));
let numbers = total.filter(item => !item.toString().includes('%'));
console.log(percents, numbers);




答案 2 :(得分:1)

您可以使用正则表达式,因为您的数组中只有字符串。

对于%:

total.filter(function(element){
    return /^[0-9]+\%$/gi.test(element);
});

绝对:

total.filter(function(element){
    return /^[0-9]+$/gi.test(element);
});

答案 3 :(得分:1)

您可以使用Array#reduce来拆分数组:



const total = ["10%", 1000, "5%", 2000];

const { absolute, percentage } = total.reduce((arrs, item) => {
  const key = typeof item === 'number' ? 'absolute' : 'percentage';
  
  arrs[key].push(item);
  
  return arrs;
}, { percentage: [], absolute: [] });

console.log(absolute);

console.log(percentage);




答案 4 :(得分:1)

Make two arrays from one array by separating number and string using advance  
js.

let total = ["10%", 1000, "5%", 2000];
var percentage = total.filter(e => isNaN(e));
var absolute = total.filter(e => !isNaN(e));
console.log({percentage , absolute});

答案 5 :(得分:0)

你可以使用

来做

let total = ["10%", 1000, "5%", 2000]


let result1 = total.filter(function(element){
    if(typeof element == "number"){
        return 1;
    }
    return 0;
})
let result2 = total.filter(function(element){
    if(typeof element == "string" && element.match(/\%$/)){
        return 1;
    }
    return 0;
})
console.log(result1, result2);

  

第一个数组过滤所有数字
  第二个数组滤波器元素是一个字符串,最后有一个“%”

答案 6 :(得分:0)

使用此代码

$array = array('10%', '1000', '20%','2000');

//表示从数组中显示整数

print_r(array_filter($ array,function($ var){return(stripos($ var,'%')=== false);}));

// for show%array

print_r(array_filter($ array,function($ var){return(stripos($ var,'%')== true);}));