对于数组:["5","something","","83","text",""]
如何从数组中删除所有非数字和空值?期望的输出:["5","83"]
答案 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值。有很好的资源可以通过谷歌轻松找到如何使用这些资源。我的代码实际上将拒绝代码推送到另一个数组,以通知用户他们上面提供了错误的输入,所以你有两个功能方向的例子。