>  기사  >  웹 프론트엔드  >  Javascript에서 여러 배열의 배열에서 일치하는 항목을 찾는 방법은 무엇입니까?

Javascript에서 여러 배열의 배열에서 일치하는 항목을 찾는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 01:58:29712검색

How to Find Matches in Arrays Across Multiple Arrays in Javascript?

다양한 배열의 배열에서 일치 항목 찾기

문자열 값이 포함된 JavaScript 배열이 여러 개 있는 시나리오를 생각해 보세요. 모든 단일 배열에서 동일한 일치 항목만 추출합니다.

다음 배열이 있다고 가정해 보겠습니다.

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];

목표는 세 배열 모두에 나타나는 일치 항목만 포함하는 배열을 얻는 것입니다.

['apple', 'fish', 'pizza']

이 작업은 외부 라이브러리를 사용하지 않고도 수행할 수 있습니다. 한 가지 접근 방식은 every().

와 함께
var result = arrays.shift().filter(function(v) {
    return arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    });
});
filter()

메서드를 사용하는 것입니다. 이 솔루션에서는

  • shift()arrays 컬렉션에서 첫 번째 배열을 제거합니다.
  • filter()는 지정된 조건.
  • every()arrays 컬렉션의 모든 요소가 조건을 통과하는지 확인합니다.

외부 배열 정렬( 배열)을 사용하면 성능을 최적화할 수 있습니다.

arrays.sort(function(a, b) {
    return a.length - b.length;
});

또한, 배열에 중복 항목이 있는 경우 대신 reduce() 메서드를 사용할 수 있습니다. filter().

var result = arrays.shift().reduce(function(res, v) {
    if (res.indexOf(v) === -1 && arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    })) res.push(v);
    return res;
}, []);

이러한 방법을 사용하면 길이를 알 수 없거나 중복된 항목이 포함된 경우에도 여러 배열의 배열에서 일치하는 항목을 효과적으로 찾을 수 있습니다.

위 내용은 Javascript에서 여러 배열의 배열에서 일치하는 항목을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.