2012-06-21 2 views
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); 

이 당신의 노력에 미리 감사드립니다 내 현재 코드입니다. MDN을 :

+0

그 모든 문자열처럼 보인다. 숫자로 해석하지 않는 문자열 만 얻는다는 의미입니까? – TheZ

+0

[MDN에서 제안한 shim] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter#Compatibility) – Bergi

+0

을보십시오 @AbuRasel - [조사하지 않았습니다 (https : //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter#Compatibility) = downvote –

답변

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

참조 할 수 있음. 뭔가 숫자로 convertable 경우

DEMO.

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])) {