2017-11-25 12 views
0

배열에서 문자열을 제거해야하고이 함수가 있어야합니다. 일부 임의 테스트를 수행하고 결과를 반환합니다. 당신은 두 번 array filter 오용하는배열에서 임의의 문자열 제거, JavaScript

"Expected: '[1, 2]', instead got: '[1, 2, \'a\', \'b\']' 
Expected: '[1, 0, 15]', instead got: '[1, \'a\', \'b\', 0, 15]' 
Expected: '[1, 2, 123]', instead got: '[1, 2, \'aasf\', \'1\', \'123\', 
123]' 
Expected: '[]', instead got: '[\'a\', \'b\', \'1\']' 
Expected: '[1, 2]', instead got: '[1, 2, \'a\', \'b\']' " 
+0

을 할 것입니다 방법입니다. 숫자가 모두 정수이면'array.filter (Number.isInteger)'를 사용하십시오. –

답변

0

꽤 쉽습니다. 여기에 귀하의 번호는 +/- 포함되지 않습니다 무한대, 당신은`array.filter (Number.isFinite)를`사용할 수 있다면 당신이 그것을

let data = [ 
 
    "Cat", 
 
    1451, 
 
    14.52, 
 
    true, 
 
    "I will be removed too :(" 
 
]; 
 

 

 
let filteredData = data.filter(item => typeof item !== "string"); 
 

 
console.log(filteredData); // or return it

+0

대단히 감사합니다 !! –

2

:

function filter_list(array) { 
array.filter((elem) => typeof elem === "string"); 
return (array); 
} 

나는 (분명히) 정의되지 않은 얻을,하지만 난 배열을 반환 할 때이 얻을 아무것도 반환하지 않습니다

.

첫 번째 문제는 필터를 호출해도 배열이 변경되지 않는다는 것입니다.

// This code isn't the correct yet, continue below 
function filter_list(array) { 
    // You have to return the result of filter. The 'array' is not changed. 
    return array.filter((elem) => typeof elem === "string"); 
} 

두 번째 문제점은 필터링 할 반대쪽 필터를 필터링한다는 것입니다.

// Correct code 
function filter_list(array) { 
    // If the condition is true, the element will be kept in the NEW array. 
    // So it must be false for strings 
    return array.filter((elem) => typeof elem !== "string"); 
} 

filter()는이 의 각 요소에 대하여 한번 배열 callback 기능을 제공하는 전화, 그리고 callbacktrue로 강제 변환 값을 반환하는 모든 값의 새로운 배열을 구성한다. callback은 값이 할당 된 배열의 인덱스에 대해서만 으로 호출됩니다. 삭제 된 인덱스 또는 결코 할당 된 값에 대해 이 호출되지 않습니다. callback 테스트 을 통과하지 못한 배열 요소는 단순히 건너 뛰고 새 배열에 포함되지 않습니다.

+0

나는 본다! 당신의 도움을 주셔서 대단히 감사합니다!! –