typeof에 대한 또 다른 질문이 있습니다. 이 예제는 다루지 않습니다.JavaScript에서 '숫자'유형을 찾으려고 할 때 잘못된 결과가 나타나는 이유는 무엇입니까?
왜 arrNew를 사용하여 첫 번째 필터()에서 0을 입력해도 작동하지 않습니까?
두 번째 필터()에서 arrNew02와 함께 작동합니다.
if 문 안에 return 전에 console.log 문을 넣으면 "number"유형이 0으로 인식됩니다.
function filterArray(arr){
var arrNew = arr.filter(function(item){
if(typeof item === "number"){
console.log("typeof item: " + item + " " + typeof item);
return item;
}
});
console.log("arrNew: " + arrNew);
var arrNew02 = arr.filter(function(item){
return(typeof item === "number");
});
console.log("arrNew02: " + arrNew02);
}
filterArray([1, "a", "b", 0, 15]);
// This should return [1, 0, 15]
나는 isNaN을 사용해 보았습니다. 그러나이 예제에서는 문자열 인 숫자를 놓쳤습니다. "1"을 반환합니다.
var arrNew03 = arr.filter(function(item){
if(isNaN(item) === false){
return item;
}
});
console.log("arrNew03: " + arrNew03);
filterArray([1, 2, "aasf", "1", "123", 123]);
// This should return [1, 2, 123]
그래서 항목 유형을 찾는 가장 좋은 방법은 무엇입니까? 숫자, 문자열 등 다른 방법이 있습니까? MDN 문서를 읽었습니다. 결국에는 typeof가 더 이상 안전하지 않은 이유에 대한 링크가 있습니다. 그러나 나는 여기서 링크 된 토론이 적절하지 않다고 생각합니다. http://es-discourse.com/t/why-typeof-is-no-longer-safe/15
'filter()'콜백이 반환해야하는 것을 오해하고 있습니다. – SLaks
예 - 아래 답변을 읽고 MDN 페이지에서 아래 답변에 제공된 링크를 읽으면 어떤 일이 벌어지는 지보고 있습니다. –
MDN에서 : 함수는 배열의 각 요소를 테스트하는 술어입니다. 요소를 보관하려면 true를 돌려주고, 그렇지 않은 경우는 false를 돌려 주어, 3 개의 인수를 취합니다. 나는 그 물건을 돌려주고있다. –