소개
이 랩에서는 JavaScript 에서 재귀 (recursion) 를 사용하여 객체 또는 배열에서 falsy 값을 깊이 제거하는 방법을 살펴봅니다. 객체 또는 배열을 입력으로 받아 truthy 값만 포함하는 새로운 압축된 객체 또는 배열을 반환하는 함수를 만들 것입니다. 이 기술은 다양한 프로그래밍 응용 프로그램에서 데이터 정리 및 단순화에 유용할 수 있습니다.
This tutorial is from open-source community. Access the source code
이 랩에서는 JavaScript 에서 재귀 (recursion) 를 사용하여 객체 또는 배열에서 falsy 값을 깊이 제거하는 방법을 살펴봅니다. 객체 또는 배열을 입력으로 받아 truthy 값만 포함하는 새로운 압축된 객체 또는 배열을 반환하는 함수를 만들 것입니다. 이 기술은 다양한 프로그래밍 응용 프로그램에서 데이터 정리 및 단순화에 유용할 수 있습니다.
객체 또는 배열에서 모든 falsy 값을 깊이 제거하려면 다음 알고리즘을 사용하십시오.
compactObject() 함수를 호출합니다.Array.isArray(), Array.prototype.filter() 및 Boolean()을 사용하여 반복 가능한 데이터를 초기화합니다. 이는 희소 배열을 피하기 위해 수행됩니다.Object.keys() 및 Array.prototype.reduce()를 사용하여 적절한 초기 값으로 각 키를 반복합니다.Boolean()을 사용하여 각 키의 값의 truthiness 를 결정하고 truthy 인 경우 누산기 (accumulator) 에 추가합니다.typeof를 사용하여 주어진 값이 object인지 확인하고 함수를 다시 호출하여 깊이 압축합니다.다음은 compactObject() 함수의 코드입니다.
const compactObject = (val) => {
const data = Array.isArray(val) ? val.filter(Boolean) : val;
return Object.keys(data).reduce(
(acc, key) => {
const value = data[key];
if (Boolean(value))
acc[key] = typeof value === "object" ? compactObject(value) : value;
return acc;
},
Array.isArray(val) ? [] : {}
);
};
이 함수를 사용하려면 객체 또는 배열을 compactObject()에 인수로 전달합니다. 이 함수는 모든 falsy 값이 제거된 새로운 객체 또는 배열을 반환합니다.
예를 들어:
const obj = {
a: null,
b: false,
c: true,
d: 0,
e: 1,
f: "",
g: "a",
h: [null, false, "", true, 1, "a"],
i: { j: 0, k: false, l: "a" }
};
compactObject(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }
축하합니다! 객체 압축 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.