2

我有一个小问题。我搜索但没有得到帮助来解决它。例如var oldArr=['one','two','3'];,我有一个数组,我想从中创建一个新数组,但只能使用字符串值,为此我目前是using Array.filter方法并且它正在工作,但有人说它不受所有浏览器支持,所以我的问题是如何我使用跨浏览器解决方案过滤我的数组。

这是我当前的代码

var oldArr=['one','two','3'];
newArr=oldArr.filter(function(a){
return !a.match(/\d/);
});
alert(newArr);

预先感谢您的努力。

4

2 回答 2

7

也许你想要这个

if (!Array.prototype.filter) {
    Array.prototype.filter = function(fun /*, thisp*/) {
        var len = this.length >>> 0;
        if (typeof fun != "function") {
            throw new TypeError();
        }

        var res = [];
        var thisp = arguments[1]; 
        for (var i = 0; i < len; i++) {
            if (i in this) {
                var val = this[i];
                if (fun.call(thisp, val, i, this)) {
                    res.push(val);
                }
            }
        }

        return res;
    };
}

var oldArr = ['one','two','3'];
    newArr=oldArr.filter(function(a){
    return !a.match(/\d/);
});
console.log(newArr);

参考:MDN

演示。

于 2012-06-21T22:27:44.407 回答
0
var oldArr = ['one', 'two', '3'];
var newArr = [];
for (var i = 0; i < oldArr.length; i++) {
    if (isNaN(oldArr[i])) {
        newArr.push(oldArr[i]);
    }
}

isNaN 评估某些东西是否可以转换为数字。它也是跨浏览器兼容的。

如果你想得到所有数字的东西,你只需在条件句上加一个 bang:

if (!isNaN(oldArr[i])) {
于 2012-06-21T22:31:03.530 回答