JavaScript에서 배열을 병합하는 2가지 방법
13098 단어 codenewbiewebdevbeginnersjavascript
다음은 배열을 결합하고 새 배열을 반환하는 두 가지 방법입니다. 저는 Spread 연산자를 사용하는 것을 좋아합니다. 그러나 이전 브라우저 지원이 필요한 경우 Concat을 사용해야 합니다.
// 2 Ways to Merge Arrays
const cars = ['🚗', '🚙'];
const trucks = ['🚚', '🚛'];
// Method 1: Concat
const combined1 = [].concat(cars, trucks);
// Method 2: Spread
const combined2 = [...cars, ...trucks];
// Result
// [ '🚗', '🚙', '🚚', '🚛' ]
대체 Concat 구문
또는 이와 관련하여
concat
메서드를 작성할 수도 있습니다.const cars = ['🚗', '🚙'];
const trucks = ['🚚', '🚛'];
const combined = cars.concat(trucks);
// [ '🚗', '🚙', '🚚', '🚛' ]
console.log(cars); // ['🚗', '🚙'];
console.log(trucks); // ['🚚', '🚛'];
보시다시피 이 작성 방식은 기존 배열을 조작하거나 변경하지 않습니다.
어느 것을 골라야 할까요?
비교할 수 있도록 두 버전을 모두 나열해 보겠습니다.
// Version A:
const combinedA = [].concat(cars, trucks);
// Version B:
const combinedB = cars.concat(trucks);
이제 문제는 어떤 것을 선택해야 하느냐입니다🤔. 의도가 훨씬 더 명확하다고 생각하기 때문에 버전 A를 선호합니다. 보기만 해도 새 배열을 만들고 있다는 것을 알 수 있으며 기존 배열을 조작하지 않습니다. 반면 버전 B를 보면
trucks
배열을 cars
배열에 추가하는 것처럼 보이고 cars
배열이 변경되지 않는다는 것이 명확하지 않은 것 같습니다. 하지만, 어쩌면 그게 나일지도 몰라. 어떻게 생각하는지 알고 싶습니다.미학 말고는 딱히 별 다른 이유가 없기 때문에, 당신과 당신의 팀은 당신이 선택한 것을 고수해야 한다고 생각합니다 👍
확산 대 Concat의 차이점
spread
를 사용하는 것을 선호합니다. 더 간결하고 작성하기 쉽기 때문입니다. 그러나 concat
를 사용하면 여전히 이점이 있습니다.스프레드는 배열을 다루고 있다는 것을 미리 알고 있을 때 환상적입니다. 그러나 소스가 문자열과 같은 다른 것인 경우에는 어떻게 됩니까? 그리고 그 문자열을 배열에 추가하려고 합니다. 예제를 살펴보겠습니다.
예: 임의 인수 처리
이것이 우리가 원하는 결과라고 가정해 보겠습니다.
[1,2,3,'random']
A. 스프레드 사용
그리고 우리가 사용해 온 패턴을 따른다면 스프레드 연산자를 사용했습니다. 결과는 다음과 같습니다.
function combineArray(array1, array2) {
return [...array1, ...array2];
}
const isArray = [1,2,3];
const notArray = 'random';
combineArray(isArray, notArray);
// 😱 [ 1, 2, 3, 'r', 'a', 'n', 'd', 'o', 'm' ]
☝️ 문자열을 펼치면 단어가 별도의 문자로 분리됩니다. 그래서 우리가 원하는 결과를 얻지 못합니다.
B. Concat 사용
그러나 우리가 해왔던 concat 패턴을 따른다면. 결과는 다음과 같습니다.
function combineArray(array1, array2) {
return [].concat(array1, array2);
}
const isArray = [1,2,3];
const notArray = 'random';
combineArray(isArray, notArray);
// ✅ [ 1, 2, 3, 'random' ]
☝️ 훌륭합니다! 우리는 원하는 결과를 얻습니다.
나는 당신 중 일부가 같은 것을 압니다. 전달하는 것이 배열인지 확인하고 그에 따라 실행하기 위해 몇 가지 조건문을 작성하겠습니다. 물론 그것도 작동합니다. 또는 코드를 적게 작성하고
concat
를 사용하고 😂로 완료하십시오.평결
그래서 여기에 빠른 규칙이 있습니다. 배열을 다루고 있다는 것을 알고 있다면
spread
를 사용하십시오. 그러나 배열이 아닌 가능성을 처리하는 경우 concat
를 사용하여 배열을 병합하세요 👍어쨌든 나는 그것을 지적하고 싶기 때문에 해결하려는 문제에 따라 가장 적절한 방법을 사용할 수 있습니다 👍
푸시로 어레이 병합 🤔
여러분 중 일부는 배열을 병합하는 데
push
를 사용할 수도 없냐고 묻습니다. 그리고 네, 확실히 할 수 있습니다! 그러나 push
를 사용하면 기존 배열을 조작하거나 변경합니다. 새 배열을 생성하지 않습니다. 그래서 당신이하려는 일에 따라. 그 점을 명심하십시오.const cars = ['🚗', '🚙'];
const trucks = ['🚚', '🚛'];
const combined = cars.push(...trucks);
console.log(combined); // 4
// ☝when you use push, it returns the LENGTH of the combined array
console.log(cars); // [ '🚗', '🚙', '🚚', '🚛' ]
console.log(trucks); // ['🚚', '🚛']
또한 배열을 다른 배열로 푸시하려고 할 때. 확산해야 합니다. 그렇지 않으면 중첩 배열이 생성됩니다. 물론, 그것이 당신이 원하는 것이 아니라면 😜
const cars = ['🚗', '🚙'];
const trucks = ['🚚', '🚛'];
cars.push(trucks);
// 😱 cars: [ '🚗', '🚙', [ '🚚', '🚛' ] ]
cars.push(...trucks);
// ✅ cars: [ '🚗', '🚙', '🚚', '🚛' ]
브라우저 지원
Spread는 ES6에서 도입되었으므로 모든 최신 브라우저에서 지원합니다. "I'm too cool"Internet Explorer를 제외하고 - 지원하지 않습니다 😕. 따라서 IE 지원이 필요한 경우 대신
concat
를 사용하거나 Babel 과 같은 컴파일러를 사용하십시오.자원
읽어주셔서 감사합니다 ❤
안녕하세요! | | Facebook | Medium | Blog
Reference
이 문제에 관하여(JavaScript에서 배열을 병합하는 2가지 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/samanthaming/2-ways-to-merge-arrays-in-javascript-42d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)