Array.filter()
สร้าง Array ใหม่ที่มีเฉพาะสมาชิกที่ ผ่านเงื่อนไข (Return true) ไม่ Mutate Array ต้นฉบับ
ไวยากรณ์
arr.filter(callback(element[, index[, array]])[, thisArg])
ตัวอย่าง 1: กรองเงินเดือน ≥ 19000
<html> <body> <p id="demo"></p> <script>
var salary = [2000, 30000, 69000, 70000, 78000];
function checkSal(sal) {
return sal >= 19000;
}
document.getElementById("demo").innerHTML = salary.filter(checkSal);
</script> </body> </html>
ผลลัพธ์: 30000,69000,70000,78000
ตัวอย่าง 2: กรองเฉพาะจำนวนบวก
<script>
var numbers = [2, 3, 4, 5, -9, 0, -2, -5];
var positive = numbers.filter(v => v > 0);
document.write(positive); // 2,3,4,5
</script>
ตัวอย่าง 3: กรอง Object ใน Array
const users = [
{name: 'John', age: 25, active: true},
{name: 'Jane', age: 30, active: false},
{name: 'Bob', age: 35, active: true}
];
const activeUsers = users.filter(u => u.active);
// [{name: 'John', age: 25, active: true}, {name: 'Bob', age: 35, active: true}]
หมายเหตุ
- ไม่เปลี่ยน Array เดิม (Immutable)
- คืน Array ใหม่เสมอ (อาจ Empty)
- Chain ได้กับ map(), reduce() ฯลฯ