Làm cách nào để so sánh ba thứ trong JavaScript?

Đối tượng là loại tham chiếu nên bạn không thể chỉ dùng === hoặc == để so sánh 2 đối tượng. Một cách nhanh chóng để so sánh xem 2 đối tượng có cùng giá trị khóa hay không là sử dụng JSON.stringify. Một cách khác là sử dụng chức năng Lodash isEqual 👏

const k1 = { fruit: '🥝' };
const k2 = { fruit: '🥝' };

// Using JavaScript
JSON.stringify(k1) === JSON.stringify(k2); // true

// Using Lodash
_.isEqual(k1, k2); // true

  • So sánh sâu lồng nhau
  • Tôi nên sử dụng cái nào?
  • Đề xuất cộng đồng
    • Cách ES6 để so sánh 2 đối tượng
    • JSON. stringify so với hiệu suất isEqual của Lodash
  • Tài nguyên

# So sánh lồng sâu

Yup, 2 cách cũng hoạt động đối với các đối tượng được lồng sâu

const one = {
  fruit: '🥝',
  nutrients: {
    energy: '255kJ',
    minerals: {
      name: 'calcium',
    },
  },
};

const two = {
  fruit: '🥝',
  nutrients: {
    energy: '255kJ',
    minerals: {
      name: 'calcium',
    },
  },
};

// Using JavaScript
JSON.stringify(one) === JSON.stringify(two); // true

// Using Lodash
_.isEqual(one, two); // true

# Tôi nên sử dụng cái nào?

Vâng, điều đó phụ thuộc vào. Đối với JSON.stringify(), thứ tự quan trọng. Vì vậy, nếu cặp khóa-giá trị được sắp xếp khác nhau trong hai đối tượng nhưng giống nhau, nó sẽ trả về false. Mặc dù điều đó không quan trọng trong Lodash isEqual, nhưng nó sẽ trả về giá trị đúng khi cặp khóa-giá trị tồn tại

Đây là đề nghị của tôi. Đối với một giải pháp nhanh chóng và bẩn thỉu, tôi sẽ sử dụng JSON.stringify(). Nhưng đối với một giải pháp mạnh mẽ hơn bao gồm nhiều trường hợp cạnh kỳ lạ hơn, hãy sử dụng cách Lodash

const one = {
  fruit: '🥝',
  energy: '255kJ',
};

const two = {
  energy: '255kJ',
  fruit: '🥝',
};

// Using JavaScript
JSON.stringify(one) === JSON.stringify(two); // false

// Using Lodash
_.isEqual(one, two); // true

# Đề xuất cộng đồng

# ES6 Cách so sánh 2 đối tượng

Đây là một giải pháp được đề xuất bởi @mustafauzun0. Tuy nhiên, có một vài điều cần lưu ý, nó sẽ không hoạt động với các đối tượng lồng nhau và thứ tự của các phím rất quan trọng. Ý tưởng đằng sau điều này tương tự như cách xâu chuỗi. Nó chuyển đổi đối tượng thành một chuỗi và so sánh xem các chuỗi có khớp không. Về cơ bản, nó so sánh sự bằng nhau của hai chuỗi. Đó là lý do tại sao thứ tự quan trọng

const k1 = { fruit: '🥝' };
const k2 = { fruit: '🥝' };

Object.entries(k1).toString() === Object.entries(k2).toString();
// true

Cảm ơn. @mustafauzun0

# JSON. stringify so với hiệu suất isEqual của Lodash

Cole Turner. Đáng chú ý là các đối tượng không đảm bảo thứ tự sắp xếp và stringify sẽ tốn nhiều hiệu năng hơn vì nó phải tuần tự hóa toàn bộ đối tượng trong khi lodash có thể thoát sớm nếu tìm thấy khóa không khớp. Điều này xuất hiện trong các cuộc phỏng vấn 🙂

Cảm ơn. @coleturner

blnkdotspace. Lodash nhanh hơn đáng kể. Bởi vì lodash sẽ thoát ngay khi đạt đến điểm khác biệt đầu tiên, nhưng stringify sẽ đi ngay cho đến khi kết thúc một cách không cần thiết. Nếu bạn có các mảng nhỏ thì không sao nhưng đối với các trường hợp sử dụng cá nhân của tôi với hơn 1000 sự kiện/sản phẩm trong danh sách, tôi sẽ không bao giờ sử dụng Stringify

Làm cách nào để so sánh ba giá trị trong JavaScript?

JavaScript cung cấp ba thao tác so sánh giá trị khác nhau. .
=== - bình đẳng nghiêm ngặt (ba bằng)
== — đẳng thức lỏng lẻo (bằng kép)
Vật. Là()

3 dấu bằng có nghĩa là gì trong JavaScript?

JavaScript === (Ba dấu bằng) Dấu ba bằng trong JavaScript có nghĩa là “bình đẳng không ép buộc kiểu”. Điều đó có nghĩa là, cả loại và giá trị phải bằng nhau. Lấy ví dụ kịch bản trong đó 0 là sai. So sánh 2 dấu bằng nhau thì mệnh đề sau đúng

Làm cách nào để sử dụng === trong JavaScript?

Toán tử đẳng thức nghiêm ngặt ( === ) kiểm tra xem hai toán hạng của nó có bằng nhau hay không, trả về kết quả Boolean. .
Các số phải có cùng giá trị số. +0 và -0 được coi là có cùng giá trị
Các chuỗi phải có các ký tự giống nhau theo cùng một thứ tự
Booleans phải vừa đúng hoặc vừa sai

diff == và === trong JavaScript là gì?

Toán tử == kiểm tra xem hai giá trị có bằng nhau không. Các. = toán tử kiểm tra xem hai giá trị có bằng nhau không . Nó còn được gọi là toán tử đẳng thức lỏng lẻo vì nó kiểm tra đẳng thức trừu tượng, i. e. , nó có xu hướng chuyển đổi kiểu dữ liệu của toán hạng để thực hiện phép so sánh khi hai toán hạng không cùng kiểu dữ liệu.