Some và Every trong Javascript
📅April 20, 2020
Sự khác nhau giữa some()
và every()
trong Javascript
Dạo gần đây khi làm việc với Array trong Javascript mình thường bị nhầm giữa 2 hàm every()
và some()
. Việc không hiểu được bản chất và cách sử dụng sẽ dẫn tới việc sử dụng sai mục đích (điều này khá nguy hiểm nha :)) Follow theo documentation của Mozilla có định nghĩa khá rõ ràng.
The every() method tests whether all elements in the array pass the test implemented by the provided function. It returns a Boolean value.
The some() method tests whether at least one element in the array passes the test implemented by the provided function. It returns a Boolean value.
Nếu mọi người để ý vào tên hàm thì cũng sẽ phần nào hiểu được ý nghĩa và mục đích của mỗi hàm rồi. Điểm chung của 2 hàm này là đều return về Boolean
.
Every
Đối với every()
, Tiếng Việt có nghĩa là “tất cả”. Nếu tất cả các phần tử trong mảng thoả mãn một hoặc nhiều điều kiện. Hàm này sẽ trả về true
, nhưng chỉ cần có 1 phần trử không thoả mãn điều kiện (failed), thì hàm này sẽ trả về false
.
const numbers = [6, 7, 8, 9]
console.log(numbers.every(number => number > 5)) // true
Array trên trả về true
vì tất cả những phần tử trong Array đều thoả mãn điều kiện (> 5
).
Nhưng chỉ cần 1 phần tử trong mảng không thoả mãn điều kiện thôi thì lập tức Array này sẽ trả về false
mà không cần quan tâm đến các phần tử khác.
Ví dụ:
const numbers = [1, 6, 7, 8, 9]
console.log(numbers.every(number => number > 5)) // false
Some
some()
dịch sang Tiếng Việt nghĩa là “một số, một vài”. Hàm này hiểu theo cách đơn giản và dễ hiểu nhất như sau. Lặp tất cả các phần tử trong một Array, chỉ phần 1 phần tử thoả mãn điều kiện thì Array này sẽ trả về true
. Nhớ nhé, chỉ cần 1 phần tử thoả mãn điều kiện thôi sẽ lập tức trả về true
luôn mà không cần quan tâm tới các phần tử khác. :)
Ví dụ:
const numbers = [15, 2, 3, 4, 5]
console.log(numbers.some(number => number > 10)) // true
Array trên trả về true
vì có “ít nhất” một phần tử (12
) thoả mãn điều kiện (> 10
). Do đó lập tức trả về true
luôn mà không cần quan tâm đến các phần tử khác trong mảng.
Còn nếu như tất cả các phần tử trong mảng đều không thoả mãn điều kiện thì tất nhiên Array đó trả về false
rồi.
const numbers = [1, 2, 3, 4, 5]
console.log(numbers.some(number => number > 10)) // false
Tổng kết
Chỉ cần hiểu rõ ý nghĩa của hàm là sẽ phân biệt được và không lo bị nhầm ^^
Some = “Một vài”
Every = “Tất cả”
Và trong lúc dịch bệnh mình có câu nói vui thế này (theo lời Phó Thủ Tướng Vũ Đức Đam):
“Một vài” => “Chỉ cần một cá nhân mắc sai lầm cũng có thể kéo cá tập thể đi xuống.”
“Tất cả” => “Tất cả cùng đồng lòng thì mới chiến thắng được COVID-19.”