Javascript / jQuery:从数组中删除所有非数字值

时间:2014-06-03 18:47:42

标签: javascript jquery arrays

对于数组:["5","something","","83","text",""]

如何从数组中删除所有非数字和空值?期望的输出:["5","83"]

2 个答案:

答案 0 :(得分:6)

使用array.filter()checks if a value is numeric

的回调函数
var arr2 = arr.filter(function(el) {
    return el.length && el==+el;
//  more comprehensive: return !isNaN(parseFloat(el)) && isFinite(el);
});

array.filter has a polyfill适用于IE8等旧版浏览器。

答案 1 :(得分:1)

我需要这样做,并根据上面的答案跟踪一个兔子踪迹,我发现这个功能现在已经以$.isNumeric()的形式内置到jQuery本身:

    $('#button').click(function(){
      // create an array out of the input, and optional second array.
      var testArray = $('input[name=numbers]').val().split(",");
      var rejectArray = [];

      // push non numeric numbers into a reject array (optional)
      testArray.forEach(function(val){
        if (!$.isNumeric(val)) rejectArray.push(val)
      });

      // Number() is a native function that takes strings and 
      // converts them into numeric values, or NaN if it fails.
      testArray = testArray.map(Number);

      /*focus on this line:*/
      testArray1 = testArray.filter(function(val){
        // following line will return false if it sees NaN.
        return $.isNumeric(val)
      });
    });

因此,您基本上是.filter(),而您提供的函数.filter()$.isNumeric(),它会根据该项是否为数字给出true / false值。有很好的资源可以通过谷歌轻松找到如何使用这些资源。我的代码实际上将拒绝代码推送到另一个数组,以通知用户他们上面提供了错误的输入,所以你有两个功能方向的例子。