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は、何かが数値に変換可能かどうかを評価します。また、クロスブラウザ互換です。

数値であるすべてのものを取得したい場合は、条件に強打を追加するだけです。

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