웹사이트 검색

자바스크립트에서 두 배열을 맵으로 변환하는 방법


저는 이렇게 생긴 두 개의 배열이 있습니다:

array1 = ["org1", "org2", "org3"];
array2 = ["a", "b", "c"];

자바스크립트를 사용하여, 같은 길이의 두 배열을 다음과 같이 보이는 객체 배열로 변환하고 싶습니다:

orgMSPID = [{"org1": "a"},{"org2": "b"}, {"org3": "c"}]

누가 저에게 이것을 어떻게 변환하는지 알려줄 수 있나요?

답변 #1

Array.map()를 사용하여 array1을 반복하고 객체의 동적 키에 []를 사용할 수 있습니다.

const array1 = ["org1", "org2", "org3"];
const array2 = ["a", "b", "c"];

const orgMPSID = array1.map((key, index) => ({ [key]: array2[index] }));

console.log(orgMPSID);

답변 #2

두 개 이상의 배열을 함께 묶는 것은 꽤 일반적인 작업입니다. 헬퍼가 포함된 라이브러리를 사용한다면, 아마도 이 작업을 위한 헬퍼 함수가 포함되어 있을 가능성이 높습니다(보통 zip이라는 이름을 가집니다). 만약 헬퍼 라이브러리를 사용하지 않는다면, 직접 zip 함수를 추가하는 것을 고려해 보세요.

zip([1,2,3], [4,5,6]) //=> [[1,4], [2,5], [3,6]]

이 결과 내의 각 항목은 아래의 어떤 줄을 사용하여 쉽게 객체로 변환될 수 있습니다:

entries.map(entry => Object.fromEntries(Array.of(pair)));
entries.map(entry => Object.fromEntries([entry]));
entries.map(([key, value]) => ({ [key]: value }));

const zip = (...args) => args[0].map((_, i) => args.map(arg => arg[i]));

const array1 = ["org1", "org2", "org3"];
const array2 = ["a", "b", "c"];

const result = zip(array1, array2).map(([key, value]) => ({ [key]: value }));

console.log(result);