Hàm array.some() trong Javascript
Trong bài này chúng ta sẽ tìm hiểu hàm some trong javascript, đây là hàm dùng để kiểm tra các phần tử trong mảng có thỏa mãn điều kiện nào đó hay không.
Trước tiên hãy xem một ví dụ mà mình lấy từ trang Mozilla dưới đây.
const array = [1, 2, 3, 4, 5]; // Hàm kiểm tra một phần tử có chia hết cho 2 hay không const even = (element) => element % 2 === 0; console.log(array.some(even)); // output: true
Kết quả trả về true
, bởi vì hàm callback even
có nhiệm vụ kiểm tra một giá trị có chia hết cho 2 hay không. Hàm even
khi truyền vào hàm slice thì chỉ cần một phần tử chia hết cho 2 là sẽ return về true.
1. Hàm some trong javascript là gì?
Hàm some trong js có nhiệm vụ lặp qua tất cả các phần tử của mảng, mỗi lần lặp nó sẽ truyền giá trị của phần tử đang lặp vào hàm callback. Chỉ cần hàm callback return true
là hàm some sẽ return true
. Ngược lại, nếu duyệt hết mảng mà không có return true
nào thì hàm some sẽ return false
.
Bài viết này được đăng tại [free tuts .net]
Nói đơn giản, nếu một phần tử nào đó thỏa với chương trình trong hàm callback thì hàm some sẽ return true
. Ngược lại nếu tất cả các phần tử đều không thỏa thì nó sẽ return false
.
Cú pháp của some như sau:
// Arrow function some((element) => { ... } ) some((element, index) => { ... } ) some((element, index, array) => { ... } ) // Callback function some(callbackFn) some(callbackFn, thisArg) // Inline callback function some(function callbackFn(element) { ... }) some(function callbackFn(element, index) { ... }) some(function callbackFn(element, index, array){ ... }) some(function callbackFn(element, index, array) { ... }, thisArg)
Trong đó:
element
là biến chứa giá trị của phần tử đang lặp.index
là key của phần tử đang lặp.array
là mảng gốc mà phần tử đang thuộc về.thisArg
là tham số không bắt buộc. Nếu được truyền vào thìthisArg
sẽ được sử dụng làm giá trị "this", nếu không được truyền vào thì giá trị "this" là "undefined".
Ví dụ: Kiểm tra xem trong mảng numbers có số nào lớn hơn 10 hay không.
function isBiggerThan10(element, index, array) { return element > 10; } [2, 5, 8, 1, 4].some(isBiggerThan10); // false [12, 5, 8, 1, 4].some(isBiggerThan10); // true
Hoặc bạn cũng có thể sử dụng arrow function cho trường hợp này như sau:
[2, 5, 8, 1, 4].some(x => x > 10); // false [12, 5, 8, 1, 4].some(x => x > 10); // true
2. Một ví dụ khác về hàm some trong js
Ví dụ: Sử dụng hàm some để kiểm tra điểm số của học sinh được lưu dưới dạng mảng có bị trượt kì thì không.
Quy ước: có một môn dưới 5 điểm sẽ bị tính là trượt.
Bài này khá đơn giản, ta chỉ cần viết một hàm kiểm tra một số, nếu số bé hơn 5 thì return false
, ngược lại return true
. Sau đó gắn nó vào hàm callback của mảng điểm số.
<button onclick="myFunction()">Kiểm tra</button> <p id="demo"></p> <script> var score = [7, 8, 9, 10, 3]; function checkPass(score) { return score < 5; } function myFunction() { if (score.some(checkPass) == true) { document.getElementById("demo").innerHTML = 'không đủ điểm đỗ!'; } else { document.getElementById("demo").innerHTML = 'Đủ điểm đỗ!'; } } </script>
Như vậy là mình đã giới thiệu xong hàm some trong javascript, đây là hàm khá đơn giản nên không có nhiều ví dụ.