JavaScript 유 틸 리 티 코드 팁
                                            
 7355 단어  JavaScript기교.
                    
JSON.stringify
우 리 는 평소에 JSON 대상 을 자주 사용 합 니 다.예 를 들 어 우리 가 대상 의 깊 은 복사 본 을 실현 하려 고 할 때 JSON 대상 의 JSON.stringify 와 JSON.parse 로 똑 같은 대상 을 복사 할 수 있 고 원래 대상 에 대해 어떠한 인용 관 계 를 가지 지 않 습 니 다.localstorage 를 사용 할 때 도 사용 합 니 다.localstorage 는 문자열 형식의 내용 만 저장 할 수 있 기 때문에 저장 하기 전에 수 치 를 JSON 문자열 로 바 꾸 고 꺼 낼 때 대상 이나 배열 로 바 꿉 니 다.
JSON.stringify 방법 에 대해 서 는 대상 이나 배열 을 JSON 문자열 로 변환 하 는 데 도움 을 줄 수 있 습 니 다.우 리 는 보통 그것 의 첫 번 째 매개 변수 만 사용 하 는데,사실은 그것 에 또 다른 두 개의 매개 변수 가 있어 서,그것 으로 하여 금 매우 좋 은 기능 을 실현 하 게 할 수 있다.
먼저 문법 을 봅 시다.
JSON.stringify(value[, replacer [, space]])함수 필터 사용 및 직렬 화 대상:
//   “  ”    
function replacer(key, value) {
 if (typeof value === "string") {
 return undefined;
 }
 return value;
}
var foo = {
 foundation: "Mozilla", 
 model: "box", 
 week: 45, 
 transport: "car", 
 month: 7
};
var jsonString = JSON.stringify(foo, replacer);
// {"week":45,"month":7}
//   “  ”    
const user = {
 name: 'zollero',
 nick: 'z',
 skills: ['JavaScript', 'CSS', 'HTML5']
};
JSON.stringify(user, ['name', 'skills'], 2);
// "{
// "name": "zollero",
// "skills": [
//  "JavaScript",
//  "CSS",
//  "HTML5"
// ]
// }"대상 이 toJSON 속성 이 있 으 면 직렬 화 될 때 이 대상 을 직렬 화 하지 않 고 toJSON 방법의 반환 값 을 직렬 화 합 니 다.
아래 의 예 를 보십시오.
var obj = {
 foo: 'foo',
 toJSON: function () {
 return 'bar';
 }
};
JSON.stringify(obj);  // '"bar"'
JSON.stringify({x: obj}); // '{"x":"bar"}'ES6 에 새로운 데이터 구조 유형 인 Set 를 도입 했다.한편,set 와 Array 의 구 조 는 매우 유사 하고 set 와 Array 는 서로 전환 할 수 있다.
배열 이 무 거 워 지 는 것 도 비교적 흔히 볼 수 있 는 전단 면접 문제 라 고 할 수 있 습 니 다.방법 은 여러 가지 가 있 습 니 다.여 기 는 군말 이 많 지 않 습 니 다.다음은 set 와...(연산 자 확장)로 간단하게 배열 을 해서 무 게 를 줄 수 있 는 지 살 펴 보 겠 습 니 다.
const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);
//=> [42, "foo", true]개발 과정 에서 이름 충돌 문제 가 발생 하 는데 장면 에 따라 서로 다른 값 을 정의 하여 같은 변 수 를 부여 해 야 한 다 는 것 이다.이 문 제 를 해결 하기 위해 ES6 의 블록 급 역할 영역 을 사용 하 는 방법 을 소개 한다.
예 를 들 어 switchcase 를 사용 할 때 우 리 는 이렇게 할 수 있다.
switch (record.type) {
 case 'added': {
 const li = document.createElement('li');
 li.textContent = record.name;
 li.id = record.id;
 fragment.appendChild(li);
 break;
 }
 case 'modified': {
 const li = document.getElementById(record.id);
 li.textContent = record.name;
 break;
 }
}ES6 에서 함수 에 매개 변수 기본 값 의 특성 을 추가 하고 매개 변수 에 기본 값 을 설정 할 수 있 으 며 코드 를 더욱 간결 하고 유지 할 수 있다 는 것 을 알 고 있 습 니 다.
사실 우 리 는 이 특성 을 통 해 함수 매개 변수 값 의 검 사 를 할 수 있다.
우선,함수 의 매개 변 수 는 임의의 형식의 값 일 수도 있 고 함수 일 수도 있 습 니 다.예 를 들 어 아래 의 이것:
function fix(a = getA()) {
 console.log('a', a)
}
function getA() {
 console.log('get a')
 return 2
}
fix(1);
// a 1
fix();
// get a
// a 2이때,우 리 는 이 특성 을 이용 하여 인자 a 에 필수 적 인 검 사 를 추가 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
function fix(a = require()) {
 console.log('a', a)
}
function require() {
 throw new Error('      a')
}
fix(1);
// a 1
fix();
// Uncaught Error:       a앞에서 JSON.stringify 를 사용 하여 대상 의 속성 을 걸 러 내 는 방법 을 소개 했다.여기 서 우 리 는 ES6 의 해체 할당 과 연산 자의 특성 을 이용 하여 속성 을 걸 러 내 는 다른 방법 을 소개 한다.
예 를 들 어 다음 예제:
//          types    inner   outer   
const { inner, outer, ...restProps } = {
 inner: 'This is inner',
 outer: 'This is outer',
 v1: '1',
 v2: '2',
 v4: '3'
};
console.log(restProps);
// {v1: "1", v2: "2", v4: "3"}재 구성 할당 의 특성 이 매우 강하 다.그것 은 우리 가 원 하 는 것 을 쉽게 얻 을 수 있 도록 해 준다.예 를 들 어 다음 코드:
//               
const car = {
 model: 'bmw 2018',
 engine: {
  v6: true,
  turbo: true,
  vin: 12345
 }
};
//      ES6       ,   { vin }    { vin: vin }
const modalAndVIN = ({ model, engine: { vin }}) => {
 console.log(`model: ${model}, vin: ${vin}`);
}
modalAndVIN(car);
// "model: bmw 2018, vin: 12345"ES6 에 추 가 된 확장 연산 자 는 배열 을 재 구성 할 수도 있 고 대상 을 재 구성 할 수도 있 으 며 대상 의 모든 속성 을 펼 칠 수도 있다.
이 특성 을 통 해 우 리 는 대상 통합 작업 을 할 수 있 습 니 다.다음 과 같 습 니 다.
//            ,                 
const obj1 = { a: 1, b: 2, c: 3 };
const obj2 = { c: 5, d: 9 };
const merged = { ...obj1, ...obj2 };
console.log(merged);
// {a: 1, b: 2, c: 5, d: 9}
const obj3 = { a: 1, b: 2 };
const obj4 = { c: 3, d: { e: 4, ...obj3 } };
console.log(obj4);
// {c: 3, d: {a: 1, b: 2, e: 4} }JavaScript 에서==과==은 매우 큰 차이 가 있 습 니 다.==은 양쪽 의 변 수 를 전의 한 다음 에 전의 후의 값 을 비교 합 니 다.==은 엄격하게 비교 합 니 다.양쪽 의 변 수 는 값 이 같 을 뿐만 아니 라 자신의 유형 도 같 아야 합 니 다.
자바 스 크 립 트 는 항상 신기 한 언어 로 조롱 당 합 니 다.바로 전의 적 특성 때문에==으로 깊이 묻 힌 bug 를 도입 할 수 있 습 니 다.bug 를 멀리 하 시 겠 습 니까?아니면 사용 하 시 겠 습 니까?
[10] == 10  // true
[10] === 10  // false
'10' == 10  // true
'10' === 10  // false
 [] == 0  // true
 [] === 0  // false
 '' == false // true
 '' === false // false
NaN === NaN // false
Object.is(0 , ' ');   //false
Object.is(null, undefined); //false
Object.is([1], true);  //false
Object.is(NaN, NaN);  //true 
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.