js에서 두 객체가 동일한지 확인하는 방법은 무엇입니까?


⭐ 칼럼 소개

프론트엔드 입문 여정: 멋진 웹 개발 세계를 탐험해 보세요. 이 칼럼을 구독하려면 위 또는 오른쪽에 있는 링크를 클릭하세요. 기하학이 여러분을 프론트엔드 여정으로 안내할 것입니다.

프런트엔드 진입 여정에 오신 것을 환영합니다! 이 칼럼은 웹 개발에 관심이 있고 이제 막 프론트엔드 분야에 입문한 분들을 위해 맞춤 제작되었습니다. 당신이 완전한 초보자이든, 기본적인 지식을 갖춘 개발자이든, 여기에서는 체계적이고 친숙한 학습 플랫폼을 제공할 것입니다. 본 칼럼에서는 매일 질문과 답변 형식으로 업데이트하여, 선별된 프론트엔드 지식 포인트와 자주 묻는 질문에 대한 답변을 제시해 드립니다. Q&A 형식을 통해 프론트엔드 기술에 대한 독자들의 질문에 보다 직접적으로 답변하고, 모두가 점차 탄탄한 기반을 다질 수 있도록 돕고자 합니다. HTML, CSS, JavaScript 또는 일반적으로 사용되는 다양한 프레임워크와 도구이든, 우리는 개념을 간단하고 이해하기 쉬운 방식으로 설명하고, 배운 내용을 확고히 할 수 있는 실용적인 예와 연습을 제공합니다. 동시에 프런트엔드 개발에서 다양한 기술을 더 잘 이해하고 적용하는 데 도움이 되는 몇 가지 실용적인 팁과 모범 사례도 공유할 것입니다.

여기에 이미지 설명을 삽입하세요.

그뿐만 아니라, 여러분이 배운 지식을 실제 개발에 적용할 수 있도록 실용적인 프로젝트 튜토리얼도 정기적으로 출시할 예정입니다. 실제 프로젝트 실습을 통해 프론트엔드 개발의 워크플로우와 방법론을 더 잘 이해하고, 문제 해결과 독립적인 개발 능력을 키워나갈 수 있습니다. 우리는 지속적인 축적과 연습만이 프론트엔드 개발 기술을 진정으로 마스터할 수 있다고 믿습니다. 그러니 도전에 대비하고 이 프론트엔드 진입 여정을 용감하게 시작하세요! 귀하가 직업 변화를 원하든, 기술 향상을 원하든, 개인적인 관심 사항을 충족시키든, 우리는 귀하에게 최고의 학습 리소스와 지원을 제공하기 위해 최선을 다하고 있습니다. 웹 개발의 놀라운 세계를 함께 탐험해 보세요! 프론트엔드 입문 여정에 동참하여 뛰어난 프론트엔드 개발자가 되어보세요! 프런트엔드 여정을 시작해보자


⭐ 얕은 상 등 (Shallow Equality)

JavaScript에서는 두 개체가 동일한지 확인하는 것이 일반적인 작업입니다. 두 개체가 동일한지 확인하려면 필요에 따라 다른 방법을 사용할 수 있습니다.

얕은 동등성은 두 개체가 동일한 메모리 주소를 참조하는지 여부를 비교합니다. 엄격한 동등 연산자(===)를 사용하여 얕은 동등 비교를 수행할 수 있습니다.

const obj1 = {
    
     name: "Alice" };
const obj2 = {
    
     name: "Alice" };

console.log(obj1 === obj2); // false,因为它们引用不同的内存地址

위의 예에서는 obj1및 의 속성 값은 obj2동일하지만 동일한 객체는 아닙니다.


⭐ 깊은 평등

심층 동등성은 서로 다른 메모리 주소를 참조하더라도 두 객체의 내용이 동일한지 비교합니다. 일반적으로 개체의 속성을 재귀적으로 비교하여 해당 값도 동일한지 확인해야 합니다.


⭐ 맞춤형 심층 평등 기능

사용자 정의 심층 동등 함수를 작성하여 심층 동등 비교를 구현할 수 있습니다. 간단한 예는 다음과 같습니다.

function deepEqual(obj1, obj2) {
    
    
  // 使用 JSON 序列化对象并比较序列化后的字符串
  const str1 = JSON.stringify(obj1);
  const str2 = JSON.stringify(obj2);
  return str1 === str2;
}

const obj1 = {
    
     name: "Alice", age: 30 };
const obj2 = {
    
     name: "Alice", age: 30 };

console.log(deepEqual(obj1, obj2)); // true,因为它们的属性值相同

undefined이 접근 방식의 한계는 함수 등과 같은 NaN특수 값을 포함하는 객체를 처리할 수 없다는 점에 유의하세요.


⭐ 타사 라이브러리 사용

isEqual보다 정확하고 안정적인 심층 동등 비교를 위해 Lodash의 함수 또는 기타 심층 동등 라이브러리 와 같은 타사 라이브러리를 사용할 수 있습니다 . 이러한 라이브러리는 중첩된 개체 및 특수 값 처리를 포함하여 더 넓은 범위의 상황을 처리할 수 있는 경우가 많습니다.

const _ = require("lodash");

const obj1 = {
    
     name: "Alice", age: 30 };
const obj2 = {
    
     name: "Alice", age: 30 };

console.log(_.isEqual(obj1, obj2)); // true,使用 Lodash 的深相等函数

요약하자면, 두 객체가 동일한지 확인하려면 필요와 객체의 복잡성에 따라 얕은 동등 또는 깊은 동등 방법을 선택할 수 있습니다. 사용자 정의 심층 동등 함수는 일반적인 접근 방식이지만 더 복잡한 경우에는 전문화된 심층 동등 라이브러리를 사용하는 것이 더 안정적일 수 있습니다.


⭐마지막에 쓰세요

이 칼럼은 폭넓은 독자층을 대상으로 하며, 프론트엔드를 처음 접하는 초보자나, 프론트엔드를 배우지 않았지만 프론트엔드에 관심이 있는 사람, 자신을 더 잘 보여주고 확장하고 싶은 백엔드 학생에게 적합합니다. 인터뷰 과정에서 프론트엔드 지식 포인트가 좀 있기 때문에, 프론트엔드에 대한 기본 지식을 갖추고 이 칼럼을 따라오신다면 부족한 부분을 찾아 메우는 데에도 큰 도움이 될 수 있습니다. 출력, 기사에 부족한 점이 있으면 홈페이지 왼쪽을 통해 저에게 연락하실 수 있습니다. , 함께 진행합시다. 동시에 여러 칼럼을 모두에게 추천합니다. 관심 있는 파트너는 구독할 수 있습니다. 아래 열에 대해서는 내 홈페이지로 이동하여 다른 열을 볼 수도 있습니다.

프론트엔드 게임(무료) 이 칼럼에서는 HTML, CSS, JavaScript에 대한 기본 지식을 활용하여 다양하고 흥미로운 페이지 게임을 함께 만들어 가며 창의성과 재미가 가득한 세계로 여러분을 안내할 것입니다. 당신이 초보자이거나 프론트엔드 개발 경험이 있다면 이 칼럼은 당신을 위한 것입니다. 기본적인 것부터 시작하여 페이지 게임을 구축하는 데 필요한 기술을 안내해 드립니다. 실제 사례와 연습을 통해 HTML을 사용하여 페이지 구조를 구축하고, CSS를 사용하여 게임 인터페이스를 아름답게 만들고, JavaScript를 사용하여 게임에 대화형 및 동적 효과를 추가하는 방법을 배우게 됩니다. 이 칼럼에서는 미로 게임, 벽돌 깨기, 뱀, 지뢰 찾기, 계산기, 비행기 전투, 틱택토, 퍼즐, 미로 등을 포함한 다양한 유형의 미니 게임을 다룰 것입니다. 각 프로젝트는 자세한 설명과 코드 예제를 통해 간결하고 명확한 단계로 구축 프로세스를 안내합니다. 동시에 페이지 성능과 사용자 경험을 개선하는 데 도움이 되는 몇 가지 최적화 팁과 모범 사례도 공유할 것입니다. 프런트엔드 기술을 연습할 흥미로운 프로젝트를 찾고 있거나 페이지 게임 개발에 관심이 있다면 프런트엔드 게임 칼럼이 최선의 선택이 될 것입니다. 프런트엔드 게임 칼럼을 구독하려면 클릭하세요.

여기에 이미지 설명을 삽입하세요.

Vue3 투명 튜토리얼 [0에서 1까지](유료) Vue3 투명 튜토리얼에 오신 것을 환영합니다! 이 칼럼은 Vue3와 관련된 포괄적인 기술 지식을 모든 사람에게 제공하는 것을 목표로 합니다. Vue2 경험이 있다면 이 칼럼을 통해 Vue3의 핵심 개념과 사용법을 익힐 수 있습니다. 우리는 처음부터 시작하여 완전한 Vue 애플리케이션을 구축하기 위해 단계별로 안내할 것입니다. 실제 사례와 연습을 통해 Vue3의 템플릿 구문, 구성 요소 개발, 상태 관리, 라우팅 및 기타 기능을 사용하는 방법을 배우게 됩니다. 또한 Vue3의 새로운 기능을 더 잘 이해하고 적용할 수 있도록 Composition API 및 Teleport와 같은 몇 가지 고급 기능을 소개합니다. 이 칼럼에서는 자세한 설명과 샘플 코드와 함께 각 프로젝트를 간결하고 명확한 단계로 안내하겠습니다. 동시에 Vue3 개발의 몇 가지 일반적인 문제와 솔루션을 공유하여 어려움을 극복하고 개발 효율성을 향상시키는 데 도움을 드릴 것입니다. Vue3를 심층적으로 배우고 싶거나 프런트엔드 프로젝트 구축에 대한 포괄적인 가이드가 필요한 경우 Vue3 철저한 튜토리얼 칼럼은 귀하에게 없어서는 안 될 리소스가 될 것입니다. Vue3 Transparent Tutorial [0부터 하나까지] 칼럼을 구독하려면 클릭하세요.

여기에 이미지 설명을 삽입하세요.

TypeScript 시작 가이드(무료)는 TypeScript 관련 기술을 빠르게 시작하고 숙달하는 데 도움을 주기 위해 고안된 칼럼입니다. 간결하고 명확한 언어와 풍부한 샘플 코드를 통해 TypeScript의 기본 개념, 구문 및 기능을 심도있게 설명합니다. 초보자이든 숙련된 개발자이든 여기에서 자신에게 적합한 학습 경로를 찾을 수 있습니다. 유형 주석, 인터페이스, 클래스와 같은 핵심 기능부터 모듈식 개발, 도구 구성, 공통 프런트엔드 프레임워크와의 통합에 이르기까지 모든 측면을 포괄적으로 다룹니다. 이 칼럼을 읽으면 JavaScript 코드의 안정성과 유지 관리 가능성을 향상시키고 프로젝트에 더 나은 코드 품질과 개발 효율성을 제공할 수 있습니다. 이 흥미롭고 도전적인 TypeScript 여행을 함께 시작합시다! TypeScript 시작 가이드 칼럼을 구독하려면 클릭하세요.

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/JHXL_/article/details/132844447