如何从字符串数组中筛选出数字

How to filter out number from array of strings

本文关键字:筛选 数字 数组 字符串      更新时间:2023-09-26

我有一个数组var data=["test","10%","abc","20%"];

现在有没有什么方法可以让我过滤掉,只得到像result=["10%","20%"]; 这样的数字

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

这将解决您的问题,并创建只有好元素的新数组:

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);

https://jsfiddle.net/LLc1zp9h/

您可以使用下划线库并执行:

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));

var data = ["test", "10%", "abc", "20%"];
var result = [];
data.forEach(function(v) {
  if (parseInt(v) > 0) result.push(parseInt(v));
});
console.log(result);

如果您需要的不是数字而是字符串值,那么只需替换:result.prush(parseInt(v));=>result.prush(v);