분류
javascript
TIL - 파라미터를 대체할 때의 JSON.STRINGIFY의 힘
본문
나는 뇌를 녹인 흥미로운 문제가 있었다. 내가 배운 것을 공유하고 비슷한 도전에 직면했을 때 잠시 시간을 절약 할 수 있습니다.
JSON.stringify()로 재미있게 놀자.
https://pawelgrzybek.com/til-the-power-of-json-stringify-replacer-parameter/
const dude = {
name: "Pawel",
friends: ["Dan", "Pedro", "Mr Gregory"]
};
const dudeStringified = JSON.stringify(dude);
console.log(dudeStringified);
// {"name":"Pawel","friends":["Dan","Pedro","Mr Gregory"]}
여기서 놀랄 일은 없습니다. 불행히도 내 프로젝트 (호기심 많은 짐승을 위한 AWS DynamoDB)에 사용 된 아키텍처로 인해 ECMAScript 세트를 다루어야 하고 상황이 더 흥미로워졌습니다. 이것 만 봐
const dude = {
name: "Pawel",
friends: new Set(["Dan", "Pedro", "Mr Gregory"])
};
const dudeStringified = JSON.stringify(dude);
console.log(dudeStringified);
// {"name":"Pawel","friends":{}}
나는 값 세트가 좋은 오래된 일반 배열로 변환 될 것이라고 가정했습니다. 내가 틀렸다고 짐작 했듯이, Set, WeakSets, Maps 및 WeakMaps는 무시되거나 null로 대체됩니다. JSON.stringify()의 선택적 두 번째 인수를 사용하면 모든 세트를 이스케이프하고 배열로 변환 할 수 있습니다.
const dude = {
name: "Pawel",
friends: new Set(["Dan", "Pedro", "Mr Gregory"])
};
const dudeStringified = JSON.stringify(dude, (key, value) =>
value instanceof Set ? [...value] : value
);
console.log(dudeStringified);
// {"name":"Pawel","friends":["Dan","Pedro","Mr Gregory"]}
문제 해결 ?
(TIL) 오늘 내가 배운
JSON.stringify()는 재귀 대체 함수 또는 화이트리스트 키 배열이 될 수 있는 두 번째 선택적 인수를 사용합니다. 이렇게…
// Second argument as a replacer function
const dude = {
name: "Dan"
};
const dudeStringified = JSON.stringify(dude, (key, value) =>
key === "name" ? "Pawel" : value
);
console.log(dudeStringified);
// {"name":"Pawel"}
// Second argument as an array of white-listed keywords
const dude = {
name: "Pawel",
friends: new Set(["Dan", "Pedro", "Mr Gregory"])
};
const dudeStringified = JSON.stringify(dude, ["name"]);
console.log(dudeStringified);
// {"name":"Pawel"}
세 번째 인수는 문자열 또는 숫자 일 수 있습니다. 구분 기호로 사용할 공백 또는 텍스트 수를 결정합니다. 보기!
// Third argument as a number
const dude = {
name: "Pawel",
friends: ["Dan", "Pedro", "Mr Gregory"]
};
const dudeStringified = JSON.stringify(dude, null, 4);
console.log(dudeStringified);
// {
// "name": "Pawel",
// "friends": [
// "Dan",
// "Pedro",
// "Mr Gregory"
// ]
// }
// Third argument as a string
const dude = {
name: "Pawel",
friends: ["Dan", "Pedro", "Mr Gregory"]
};
const dudeStringified = JSON.stringify(dude, null, "?");
console.log(dudeStringified);
// {
// ?"name": "Pawel",
// ?"friends": [
// ??"Dan",
// ??"Pedro",
// ??"Mr Gregory"
// ?]
// }
다음 번까지 호기심을 유지하십시오 ?
- 이전글JavaScript 개발자 콘솔을 사용하는 방법 - JavaScript guide 19.10.26
- 다음글Tippy.js의 공식 React 컴포넌트 19.10.26