Javascript 배열 필터 방법
14631 단어 javascriptbeginnerstypescriptwebdev
filter
생성하는 배열은 일반적으로 원래 배열의 축소된 버전입니다. 다음은 기본적인 예입니다.let myArray = [ '⚡️', '🔎', '🔑', '🔩' ];
let filteredArray = myArray.filter((element) => {
return (element == '🔑' || element == '🔩'))
});
console.log(filteredArray); // [ '🔑', '🔩' ]
보시다시피 filter 메서드는 해당 요소가
true
를 반환해야 하는 새로운 필터링된 배열에 요소가 있도록 허용합니다. 각 요소를 효과적으로 반복하고 테스트를 실행하여 무엇이 남아 있어야 하는지 확인합니다. 화살표 함수는 한 줄에 암시적으로 true를 반환하므로 다음과 같이 작성된 이 코드의 축소된 버전을 볼 수 있습니다.let myArray = [ '⚡️', '🔎', '🔑', '🔩' ];
let filteredArray = myArray.filter(element => element == '🔑' || element == '🔩');
console.log(filteredArray); // [ '🔑', '🔩' ]
필터 메서드 콜백 함수
언급한 대로
filter
는 콜백 함수를 허용합니다. 콜백 함수는 3개의 인수로 구성됩니다.Array.filter((element, index, array) => {
// Filter the array
});
각각 어떤 일을 하는지 살펴보겠습니다.
요소
이것은
filter
에서 검사 중인 현재 요소입니다. filter
는 배열의 각 항목을 검토하여 필터링된 새 배열에 있어야 하는지 테스트합니다.인덱스
이것은 작업 중인 배열 항목의 0부터 시작하는 인덱스입니다. 예를 들어, 배열의 첫 번째 요소를 보는 경우
0
입니다.정렬
원래 배열로 작업을 수행하려는 경우 전체 배열입니다.
필터 메서드 내에서 배열 변경
필터는 콜백 함수를 사용하기 때문에 검사 중인 원래 배열을 변경할 수 있습니다. 예를 들어 항목을 필터링할 때마다 배열에 새 항목을 푸시할 수 있습니다.
let myArray = [ '⚡️', '🔎', '🔑', '🔩' ];
let filteredArray = myArray.filter((element) => {
myArray.push('⚡️');
return true;
});
console.log(filteredArray); // [ '⚡️', '🔎', '🔑', '🔩' ]
이미 알고 계셨겠지만 이렇게 하면 무한 루프가 생성됩니다. 다행스럽게도 reduce 에서와 마찬가지로 Javascript는 이러한 일이 발생하는 것을 허용하지 않습니다. 대신 이러한 방식으로 추가된 배열에 대한 새 요소는 무시됩니다. 그러나 기존 요소의 변형은 완전히 괜찮습니다.
let myArray = [ '⚡️', '🔎', '🔑', '🔩' ];
let filteredArray = myArray.filter((element, index) => {
myArray[index + 1] = '⚡️';
return (element == '⚡️');
});
console.log(filteredArray); // [ '⚡️', '⚡️', '⚡️', '⚡️' ]
개체 배열 필터링
개체 배열 필터링은 배열과 동일한 규칙을 따릅니다.
.
표기법을 사용하여 배열 내 객체의 하위 속성을 필터링할 수 있습니다. 예를 들어 나이가 >18이어야 하는 age
로 다음 배열을 필터링하려면 다음과 같이 합니다.let myArray = [ { age: 4 }, { age: 12 }, { age: 19 }, { age: 21 } ];
let filteredArray = myArray.filter((element, index) => {
return (element.age > 18);
});
console.log(filteredArray); // [ { age: 19 }, { age: 21 } ]
검색 기준으로 어레이 필터링
filter
의 일반적인 용도는 값 배열을 가져와서 검색어를 기반으로 검색하는 것입니다. 이것은 includes
또는 regex
를 사용하여 수행할 수 있습니다. 예를 들어:let myArray = [ 'cat', 'catdog', 'dog', 'fish', 'fishcat' ]
let filteredArray = myArray.filter((element, index) => {
return element.match(/cat/)
});
console.log(filteredArray); // ['cat', 'catdog', 'fishcat']
필터는 어레이의 얕은 복사본을 만듭니다.
filter
가 원래 어레이의 새 복사본을 만드는 것처럼 보일 수 있지만 그렇지 않습니다. 실제로 filter
는 원래 배열의 얕은 복사본을 만듭니다. 즉, 배열 내의 개체를 변경하면 원본도 변경됩니다. 이를 이해하기 위해 연령 예를 다시 살펴보겠습니다.let myArray = [ { age: 4 }, { age: 12 }, { age: 19 }, { age: 21 } ];
let filteredArray = myArray.filter((element, index) => {
return (element.age > 18);
});
console.log(filteredArray); // [ { age: 19 }, { age: 21 } ]
filteredArray[0].age = 50;
filteredArray[1] = { age: 40 };
console.log(filteredArray); // [ { age: 50 }, { age: 40 } ]
console.log(myArray); // [ { age: 4 }, { age: 12 }, { age: 50 }, { age: 21 } ]
보시다시피
filteredArray[0].age
표기법을 사용하여 필터링된 배열을 수정하면 원본도 수정됩니다. 하지만 잠시만요! filteredArray[1] = { age: 40 }
는 필터링된 배열만 변경합니다. Javascript는 .
표기법을 두 배열을 모두 업데이트하는 것으로 해석하지만 대괄호 표기법[]
은 필터링된 배열의 두 번째 위치에 새 값을 설정하는 것으로 해석하기 때문입니다.이것은 혼란스러울 수 있지만 알아두면 매우 유용한 Javascript의 또 다른 단점입니다!
결론
필터 방법은 널리 사용되며 변경하기 쉬운 방법으로 특정 기준에 따라 배열의 새로운 하위 집합을 생성합니다. 원본 배열의 얕은 복사본만 만들어지므로 특정 방식으로 배열을 수정하면 원본에 영향을 미칩니다.
Reference
이 문제에 관하여(Javascript 배열 필터 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smpnjn/javascript-array-filter-method-28hg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)