>  기사  >  웹 프론트엔드  >  여러 JavaScript 배열에서 일치하는 요소를 찾는 방법은 무엇입니까?

여러 JavaScript 배열에서 일치하는 요소를 찾는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 18:45:09804검색

How to Find Matching Elements Across Multiple JavaScript Arrays?

여러 JavaScript 배열에서 요소 일치

문제

문자열 값의 여러 JavaScript 배열이 있는 경우 모든 요소에서 동일하게 나타나는 요소를 찾습니다. 배열. 예:

<code class="javascript">var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];</code>

예상 출력:

<code class="javascript">['apple', 'fish', 'pizza']</code>

해결책

일치하는 요소를 찾으려면 배열 방법의 조합을 사용할 수 있습니다.

<code class="javascript">const arrays = [arr1, arr2, arr3];
const result = arrays.shift().filter((v) => {
  return arrays.every((a) => {
    return a.indexOf(v) !== -1;
  });
});</code>

단계:

  1. arrays.shift()를 사용하여 원래 목록에서 첫 번째 배열을 제거합니다.
  2. 다음에서 .filter()를 사용합니다. 각 요소를 반복할 첫 번째 배열 v.
  3. 나머지 배열에 .every()를 사용하여 각 배열에 현재 요소 v가 포함되어 있는지 확인합니다.
  4. 요소 v가 존재하는 경우 모든 배열에서 이를 결과 배열에 포함시킵니다.

이 논리를 각 배열에 반복적으로 적용하면 제공된 배열에서 모든 동일하게 나타나는 요소를 효과적으로 찾을 수 있습니다.

추가 고려 사항

중복 요소 처리:

제공된 솔루션은 배열에 중복 요소가 포함되어 있지 않다고 가정합니다. 그렇다면 다음과 같이 코드를 수정할 수 있습니다.

<code class="javascript">const result = arrays.shift().reduce((res, v) => {
  if (res.indexOf(v) === -1 &amp;&amp; arrays.every((a) => {
    return a.indexOf(v) !== -1;
  })) res.push(v);
  return res;
}, []);</code>

이 코드는 .filter() 대신 .reduce()를 사용합니다. 결과 배열 내의 중복 항목을 확인하고 모든 배열에 존재하는 고유한 요소만 추가합니다.

임의의 배열 수:

이 솔루션은 다음과 함께 작동하도록 설계되었습니다. 알 수 없는 배열 수입니다. arrays.shift()를 사용하면 모든 배열이 처리될 때까지 첫 번째 배열을 나머지 배열과 순차적으로 비교할 수 있습니다.

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

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