我有一个数组var data = [" test"," 10%"," abc"," 20%" ];
现在有什么办法让我可以过滤出来,只得到result=["10%","20%"];
答案 0 :(得分:1)
您可以使用此function
:
说明:我们创建一个新数组并推送 旧数组的所有元素,如果是第一个字母 可以转换成数字。
var data = ["test", "10%", "abc", "20%"];
function onlyNumbers(array) {
var newArr = [];
array.forEach(function(e) {
if (parseInt(e.charAt(0))) {
newArr.push(e);
}
})
return newArr;
}
var dataNew = onlyNumbers(data); // <-- ["10%","20%"]
document.write(JSON.stringify(dataNew));
&#13;
答案 1 :(得分:0)
var data = ["test", "10%", "abc", "20%"];
var result = [];
data.forEach(function(v) {
if (parseInt(v) > 0) result.push(parseInt(v));
});
console.log(result);
如果您不需要数字而是字符串值,那么只需替换: result.push(parseInt函数(V)); =&GT; result.push(V);
答案 2 :(得分:0)
您可以使用underscore library并执行:
var data=["test","10%","abc","20%"];
var result = _.filter(data, function(item) {
return item.match(/^(\d+|\d+[.]\d+)%?$/);
});
document.write(JSON.stringify(result));
<script src="http://underscorejs.org/underscore-min.js"></script>
你可以在没有外部库的情况下做同样的事情:
var data=["test","10%","abc","20%"],
result = [];
for(var i = 0; i < data.length; i++) {
if (data[i].match(/^(\d+|\d+[.]\d+)%?$/)) {
result.push(data[i]);
}
}
document.write(JSON.stringify(result));
答案 3 :(得分:0)
这将解决您的问题,并创建只有好元素的新数组:
function check_percentage(num){
var regex = /^(\d+%)$/;
if (num.match(regex)){
return true;
}
}
var result=["babab","fg210%","120%","babab","4214210%","20%"],
filtered_result=[];
result.forEach(function(k,v){
if (check_percentage(k)){
filtered_result.push(k);
}
});
console.log(filtered_result);