我需要有效地清理大量(大约5000个元素)。它由数字和其他类型的数据组成。
var arr = [2, "da", 3, "", dd, 4];
我需要一个只有数字的数组。到目前为止,这就是我所拥有的(测试和复制方法)。
var newArr = [];
var index = 0;
for (var k=0; k<arr.length;k++) {
var ele = arr[k];
if (!isNaN(parseFloat(ele)) && isFinite(ele)) {
newArr[index++] = ele;
}
}
return newArr;
感谢您的任何意见!
答案 0 :(得分:2)
这应该是有效的。
var newArr = arr.slice(); // copy the array, this is optionnal depending of the context
for (var k=arr.length - 1; k >= 0; k--) {
if (isNaN(arr[k]) || !isFinite(arr[k])) {
newArr.splice(k, 1); // replace by arr if you don't copy the array
}
}
return newArr;
答案 1 :(得分:1)
使用Array.prototype.filter()
功能:
var arr = [2, "da", 3, "", 'dd', 4, -4],
newArr = arr.filter(function (v) {
return Number(v) && isFinite(v);
});
console.log(newArr);