inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 비기너: 튼튼한 기본 만들기

1. JSON 오브젝트 개요, JS 타입을 JSON 타입으로 변환

안녕하세요

148

정세연

작성한 질문수 15

0

안녕하세요 강사님.

이전 질문과 같이 따라해보다가 문제가 있어.. 구글링 해봐도 알기 힘들어 여쭤봅니다.

function replace(key, value) {

  if (typeof value === "string") {

    return undefined;

  }

  return 5;

}

var obj = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};

var json = JSON.stringify(obj, replace);

console.log(json);

와 같이 코딩했습니다.

제가 생각한 결과는 밸류가 string 타입인 프로퍼티는 모두 삭제되고 나머지 프로퍼티의 밸류가 5로 대체된 문자열이 나올것이라 생각했습니다만 단순히 5만 나옵니다.

예상결과 : {"week":5,"month":5}

실제결과: 5

어떤것이 결과를 다르게 하는 걸까요??

왜 밸류값들만 대체되는게 아니라 전체 데이터가 바뀌는걸까요??

oop javascript

답변 1

0

김영보

function replace(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  //5를 value 바꾸면, 원하는 결과는 아니지만 {week: 45, month: 7} 반환됩니다. 
  return value;
}

JSON.stringify(obj, replace)의 두 번째 파라미터는 일반적으로 사용하지 않습니다.
두 번째 기능 자체가 코드의 가독성이 떨어집니다.
JSON.stringify()를 실행하기 전에 obj의 데이터를 for-in 문 등의 방법으로 걸러낸 후 처리하는 것이 일반적입니다.
강좌에서도 언급했지만 JSON.stringify(obj, replace)의 두 번째 파라미터 기능은 그렇게 좋은 기능이 아닙니다.
이런 기능이 있다는 정도로 넘기고 사용하지 않는 것이 나을 것 같습니다.

프론트엔드 부트캠프 가기 전, 짧은 감사 인사드립니다!

2

109

2

섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.

1

148

2

섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.

0

140

2

섹션 1. 6번째 강의 질문입니다.

1

247

1

선생님 Objcet 질문 있습니다.

0

299

2

forEach문을 활용한 코딩시간 풀이

0

616

1

sort 코딩 시간 풀이

0

292

1

코딩 시간 풀이 올려봅니다.

0

229

1

인덱스 코딩시간 문제풀이

0

381

1

for문 코딩 시간 답제출

0

306

1

3:39 sort에 들어가서 one,two 파라미터질문입니다.

0

194

0

퀴즈 질문 및 정답

0

356

1

오브젝트

0

283

1

인스턴스 목적

1

239

1

[코딩시간 01] 3항 연산자로 작성했을 때, 각 값..?

0

269

1

Undefined === Null; // true???

0

194

1

indexOf의 파라미터에 음수를 작성 했을때에 대한 질문입니다.

0

1031

5

length 값 변환 논리에 대한 질문입니다.

0

211

1

상수 변수 선언에 대해

0

235

1

코딩 시간 (for문) 풀이

0

255

1

Object vs object

1

499

1

코딩 시간 풀이입니다.

0

195

1

log(add(1, 2, 3, 4));

0

179

1

코딩시간 답 제출

0

196

1