消除大型数组中某些元素的有效方法

时间:2017-02-24 14:50:00

标签: javascript

我需要有效地清理大量(大约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;

感谢您的任何意见!

2 个答案:

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