如何从字符串数组中过滤掉数字

时间:2016-03-30 10:41:30

标签: javascript jquery

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

现在有什么办法让我可以过滤出来,只得到result=["10%","20%"];

之类的数字

4 个答案:

答案 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;
&#13;
&#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);

https://jsfiddle.net/LLc1zp9h/