Cách chính xác để kiểm tra sự bình đẳng giữa các chuỗi trong JavaScript là gì?
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: //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
2 haynew 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:new String["a"] == new String["a"]
- 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ị
1 hoặcnew String["a"].valueOf[] == new String["a"].valueOf[]
2, hãy tránhnew String["a"].valueOf[] == new String["a"].valueOf[]
2 và sử dụngnew String["a"] == new String["a"]
3.new String["a"] == new String["a"]
- 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 [
5,new String["a"].valueOf[] == new String["a"].valueOf[]
6 hoặcnew String["a"].valueOf[] == new String["a"].valueOf[]
7 - mảng trống], hãy tránhnew String["a"].valueOf[] == new String["a"].valueOf[]
2 và sử dụngnew String["a"] == new String["a"]
3.new String["a"] == new String["a"]
- Trong tất cả các trường hợp khác, bạn an toàn khi sử dụng
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.new String["a"] == new String["a"]
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 !=]
A === B [và phủ định của nó! ==] [and its negation !==]
Đã trả lời ngày 3 tháng 8 năm 2020 lúc 19:44Aug 3, 2020 at 19:44
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
}
5Kiể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
}
6Vì vậy, có lẽ bạn phải sử dụng chức năng
7 như thế nàyif[s1.trim[] === s2.trim[]] { // your code }
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
2
Thực tế có hai cách trong đó các chuỗi có thể được thực hiện trong JavaScript.
8 Điều này tạo ra một giá trị chuỗi nguyên thủy.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ạiif[s1.trim[] === s2.trim[]] { // your code }
0.if [title === "LastName"] doSomething[];
1if [title === "LastName"] doSomething[];
2if [title === "LastName"] doSomething[];
2if [title === "LastName"] doSomething[];
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
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[];
7Tô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
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
grssnbchrgrssnbchrgrssnbchr
2.8456 huy hiệu vàng35 huy hiệu bạc69 huy hiệu đồng6 gold badges35 silver badges69 bronze badges