这是一个数组,
total = ["10%", 1000, "5%", 2000]
。如何使用javascript数组过滤器将这些过滤为两个数组,例如,百分比= [" 10%",#34; 5%"]和绝对= [1000,2000]。
答案 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);}));