Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Cách chính xác để kiểm tra sự bình đẳng giữa các chuỗi trong JavaScript là gì?

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Khi được hỏi ngày 27 tháng 8 năm 2010 lúc 17:37Aug 27, 2010 at 17:37

8

Luôn luôn cho đến khi bạn hoàn toàn hiểu được sự khác biệt và ý nghĩa của việc sử dụng các toán tử

new String("a") == new String("a")
2 và
new String("a") == new String("a")
3, hãy sử dụng toán tử
new String("a") == new String("a")
3 vì nó sẽ cứu bạn khỏi các lỗi và WTF tối nghĩa (không quá khó tính). Toán tử
new String("a") == new String("a")
2 "thông thường" có thể có kết quả rất bất ngờ do tính toán loại bên trong, do đó, sử dụng
new String("a") == new String("a")
3 luôn là cách tiếp cận được khuyến nghị.

Để hiểu rõ hơn về điều này, và các phần "tốt so với xấu" khác của JavaScript đọc về ông Douglas Crockford và công việc của ông. Có một cuộc nói chuyện tuyệt vời của Google Tech, nơi anh ấy tóm tắt rất nhiều thông tin tốt: http://www.youtube.com/watch?v=hqvtijbzook


Update:

Sê -ri Bạn không biết JS của Kyle Simpson là tuyệt vời (và miễn phí đọc trực tuyến). Loạt phim đi vào các khu vực thường bị hiểu lầm của ngôn ngữ và giải thích "phần xấu" mà Crockford gợi ý bạn tránh. Bằng cách hiểu chúng, bạn có thể sử dụng chúng đúng cách và tránh những cạm bẫy.

Cuốn sách "Up & Go" bao gồm một phần về bình đẳng, với bản tóm tắt cụ thể này về thời điểm sử dụng các toán tử lỏng lẻo (

new String("a") == new String("a")
2) so với các toán tử nghiêm ngặt (
new String("a") == new String("a")
3):

Để đun sôi rất nhiều chi tiết cho một vài điều đơn giản và giúp bạn biết nên sử dụng

new String("a") == new String("a")
2 hay
new String("a") == new String("a")
3 trong các tình huống khác nhau, đây là các quy tắc đơn giản của tôi:

  • Nếu một trong hai giá trị (còn gọi là bên) trong một so sánh có thể là giá trị
    new String("a").valueOf() == new String("a").valueOf()
    
    1 hoặc
    new String("a").valueOf() == new String("a").valueOf()
    
    2, hãy tránh
    new String("a") == new String("a")
    
    2 và sử dụng
    new String("a") == new String("a")
    
    3.
  • Nếu một trong hai giá trị trong một so sánh có thể là của các giá trị cụ thể này (
    new String("a").valueOf() == new String("a").valueOf()
    
    5,
    new String("a").valueOf() == new String("a").valueOf()
    
    6 hoặc
    new String("a").valueOf() == new String("a").valueOf()
    
    7 - ​​mảng trống), hãy tránh
    new String("a") == new String("a")
    
    2 và sử dụng
    new String("a") == new String("a")
    
    3.
  • Trong tất cả các trường hợp khác, bạn an toàn khi sử dụng
    new String("a") == new String("a")
    
    2. Nó không chỉ an toàn, mà trong nhiều trường hợp, nó đơn giản hóa mã của bạn theo cách cải thiện khả năng đọc.

Tôi vẫn giới thiệu cuộc nói chuyện của Crockford cho các nhà phát triển, những người không muốn đầu tư thời gian để thực sự hiểu JavaScript, đó là lời khuyên tốt cho một nhà phát triển chỉ thỉnh thoảng làm việc trong JavaScript.

Đã trả lời ngày 27 tháng 8 năm 2010 lúc 17:39Aug 27, 2010 at 17:39

StwstwSTW

43.7K17 Huy hiệu vàng106 Huy hiệu bạc159 Huy hiệu đồng17 gold badges106 silver badges159 bronze badges

18

Nếu bạn biết chúng là chuỗi, thì không cần phải kiểm tra loại.

"a" == "b"

Tuy nhiên, lưu ý rằng các đối tượng chuỗi sẽ không bằng nhau.

new String("a") == new String("a")

sẽ trả về sai.

Gọi phương thức valueOf () để chuyển đổi nó thành nguyên thủy cho các đối tượng chuỗi,

new String("a").valueOf() == new String("a").valueOf()

sẽ trả về đúng

Đã trả lời ngày 27 tháng 8 năm 2010 lúc 17:40Aug 27, 2010 at 17:40

AnuraganuragAnurag

139K36 Huy hiệu vàng220 Huy hiệu bạc257 Huy hiệu Đồng36 gold badges220 silver badges257 bronze badges

6

Chỉ một bổ sung cho câu trả lời: nếu tất cả các phương thức này trả về sai, ngay cả khi các chuỗi có vẻ bằng nhau, có thể có một khoảng trắng ở bên trái và hoặc phải của một chuỗi. Vì vậy, chỉ cần đặt một

if(s1.trim() === s2.trim())
{
    // your code
}
1 ở cuối chuỗi trước khi so sánh:

if(s1.trim() === s2.trim())
{
    // your code
}

Tôi đã mất hàng giờ cố gắng tìm ra những gì sai. Hy vọng điều này sẽ giúp ích cho ai đó!

Đã trả lời ngày 2 tháng 5 năm 2017 lúc 13:41May 2, 2017 at 13:41

Akelecakelecakelec

3.5973 Huy hiệu vàng41 Huy hiệu bạc38 Huy hiệu Đồng3 gold badges41 silver badges38 bronze badges

8

Bạn có thể sử dụng

new String("a") == new String("a")
2 hoặc
new String("a") == new String("a")
3 nhưng lần cuối cùng hoạt động theo cách đơn giản hơn (SRC)

a == B (và phủ định của nó! =) (and its negation !=)

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

A === B (và phủ định của nó! ==) (and its negation !==)

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Đã trả lời ngày 3 tháng 8 năm 2020 lúc 19:44Aug 3, 2020 at 19:44

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Kamil Kiełczewskikamil KiełczewskiKamil Kiełczewski

77.6K27 Huy hiệu vàng341 Huy hiệu bạc319 Huy hiệu đồng27 gold badges341 silver badges319 bronze badges

5

Điều dẫn tôi đến câu hỏi này là

if(s1.trim() === s2.trim())
{
    // your code
}
4 và
if(s1.trim() === s2.trim())
{
    // your code
}
5

Kiểm tra trường hợp của tôi

 if (title === "LastName")
      doSomething();

và tiêu đề là

if(s1.trim() === s2.trim())
{
    // your code
}
6

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Vì vậy, có lẽ bạn phải sử dụng chức năng

if(s1.trim() === s2.trim())
{
    // your code
}
7 như thế này

var title = $(this).text().trim();

Đã trả lời ngày 27 tháng 7 năm 2016 lúc 10:52Jul 27, 2016 at 10:52

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

2

Thực tế có hai cách trong đó các chuỗi có thể được thực hiện trong JavaScript.

  1. if(s1.trim() === s2.trim())
    {
        // your code
    }
    
    8 Điều này tạo ra một giá trị chuỗi nguyên thủy.

  2. if(s1.trim() === s2.trim())
    {
        // your code
    }
    
    9 Điều này tạo ra một đối tượng trình bao bọc loại
     if (title === "LastName")
          doSomething();
    
    0.

     if (title === "LastName")
          doSomething();
    
    1
     if (title === "LastName")
          doSomething();
    
    2
     if (title === "LastName")
          doSomething();
    
    2

Vì vậy, cách tốt nhất để kiểm tra bình đẳng là sử dụng toán tử

new String("a") == new String("a")
3 vì nó kiểm tra giá trị cũng như loại của cả hai toán hạng.

Nếu bạn muốn kiểm tra sự bình đẳng giữa hai đối tượng thì sử dụng

 if (title === "LastName")
      doSomething();
4 là cách chính xác.

new String('javascript').valueOf() == new String('javascript').valueOf()

Đã trả lời ngày 2 tháng 5 năm 2015 lúc 19:11May 2, 2015 at 19:11

AbhishekabhishekAbhishek

1.1961 Huy hiệu vàng8 Huy hiệu bạc12 Huy hiệu đồng1 gold badge8 silver badges12 bronze badges

Chuỗi

 if (title === "LastName")
      doSomething();
5 có thể được kiểm tra bằng thủ thuật
 if (title === "LastName")
      doSomething();
6.

var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);

Dunc

17.8K6 Huy hiệu vàng83 Huy hiệu bạc99 Huy hiệu Đồng6 gold badges83 silver badges99 bronze badges

Đã trả lời ngày 4 tháng 7 năm 2018 lúc 12:33Jul 4, 2018 at 12:33

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

Muhammad Usmanmuhammad UsmanMuhammad Usman

7951 Huy hiệu vàng10 Huy hiệu bạc18 Huy hiệu đồng1 gold badge10 silver badges18 bronze badges

2

So sánh nghiêm ngặt

Để thực hiện so sánh đơn giản, hãy sử dụng

new String("a") == new String("a")
3 để kiểm tra sự bình đẳng nghiêm ngặt. Như những người khác đã nói, điều này có lợi thế là hiệu quả nhất và giảm cơ hội của mã lỗi hoặc mã không chắc chắn. Nguồn: MDN Web Docs: Bình đẳng nghiêm ngặt.
new String("a") == new String("a")
3
to check for strict equality. As others stated, this has the advantages of being most efficient and reducing the chances of buggy or uncertain code. Source: MDN Web Docs: Strict Equality.

var a = "hello1";
var b = "hello2";
console.log("a === a?" + (a === a) + "|");
console.log("a === b?" + (a === b) + "|");

So sánh theo thứ tự chữ cái

Nếu bạn muốn so sánh hai chuỗi để biết một chuỗi có đến trước hay sau một chuỗi khác, dựa trên việc sắp xếp tự nhiên, hãy sử dụng các toán tử

 if (title === "LastName")
      doSomething();
8,
 if (title === "LastName")
      doSomething();
9,
var title = $(this).text().trim();
0 và
var title = $(this).text().trim();
1. Nguồn: MDN WebDocs cho
 if (title === "LastName")
      doSomething();
8,
 if (title === "LastName")
      doSomething();
9,
var title = $(this).text().trim();
0 và
var title = $(this).text().trim();
1.

    var a = "hello1";
    var b = "hello2";
    console.log("a < a?" + (a < a) + "|");
    console.log("a < b?" + (a < b) + "|");
    console.log("a > b?" + (a > b) + "|");
    console.log("b > a?" + (b > a) + "|");

Đã trả lời ngày 26 tháng 5 năm 2021 lúc 15:47May 26, 2021 at 15:47

HoldoffhungerHolderoffhungerHoldOffHunger

Phim thương hiệu vàng 17K893 Huy hiệu bạc124 Huy hiệu đồng8 gold badges93 silver badges124 bronze badges

Xem xét rằng cả hai chuỗi có thể rất lớn, có 2 cách tiếp cận chính

var title = $(this).text().trim();
6 và
var title = $(this).text().trim();
7

Tôi đã đề xuất chức năng này

new String("a") == new String("a")
0

Đã trả lời ngày 25 tháng 2 năm 2020 lúc 10:25Feb 25, 2020 at 10:25

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

NagibabanagibabaNagibaba

3,5241 Huy hiệu vàng32 Huy hiệu bạc39 Huy hiệu đồng1 gold badge32 silver badges39 bronze badges

Đối với các chuỗi, chúng tôi có một phương pháp được hỗ trợ

var title = $(this).text().trim();
8 rất tiện dụng trong so sánh chuỗi. IMO, chúng ta chỉ nên sử dụng nó và không cần phải làm phức tạp công cụ.

Usage:

new String("a") == new String("a")
1

Đã trả lời ngày 7 tháng 8 lúc 8:17Aug 7 at 8:17

Cũng xem xét rằng

var title = $(this).text().trim();
9.

Đã trả lời ngày 19 tháng 4 lúc 20:09Apr 19 at 20:09

Hướng dẫn can you use == to compare strings in javascript? - bạn có thể sử dụng == để so sánh các chuỗi trong javascript không?

grssnbchrgrssnbchrgrssnbchr

2.8456 huy hiệu vàng35 huy hiệu bạc69 huy hiệu đồng6 gold badges35 silver badges69 bronze badges

Bạn có thể sử dụng == khi so sánh các chuỗi không?

Bạn không nên sử dụng == (toán tử bình đẳng) để so sánh các chuỗi này vì chúng so sánh tham chiếu của chuỗi, tức là chúng có cùng một đối tượng hay không.Mặt khác, phương thức bằng () so sánh liệu giá trị của các chuỗi có bằng nhau hay không là chính đối tượng. because they compare the reference of the string, i.e. whether they are the same object or not. On the other hand, equals() method compares whether the value of the strings is equal, and not the object itself.

Bạn có thể sử dụng toán tử == với chuỗi không?

Trong C, các giá trị chuỗi (bao gồm các chữ cái) được biểu diễn dưới dạng mảng char theo sau là 0 Terminator và bạn không thể sử dụng toán tử == để so sánh các nội dung mảng;Ngôn ngữ đơn giản là không xác định hoạt động.you cannot use the == operator to compare array contents; the language simply doesn't define the operation.

Hai chuỗi có thể được so sánh với == Biểu tượng?

Người ta có thể sử dụng các toán tử == để so sánh tham chiếu (so sánh địa chỉ) và phương thức .equals () để so sánh nội dung. equals() method for content comparison.