วิธี filter

วิธี filter ช่วยให้กรอง องค์ประกอบอาร์เรย์ โดยคงไว้เฉพาะองค์ประกอบที่ ตรงตามเงื่อนไขที่กำหนด วิธีนี้รับฟังก์ชันเป็นพารามิเตอร์ ซึ่งจะ ทำงานสำหรับแต่ละองค์ประกอบของอาร์เรย์ ผลลัพธ์ของวิธีนี้จะคืนค่าเป็นอาร์เรย์ใหม่ ซึ่งจะมีเฉพาะองค์ประกอบเหล่านั้น ที่ฟังก์ชันที่ส่งผ่านคืนค่า true

สามารถส่งพารามิเตอร์สามตัวเข้าไปในฟังก์ชันได้ หากมีพารามิเตอร์เหล่านี้ (ไม่จำเป็นต้องมีทั้งหมด) โดยตัวแรกจะได้รับองค์ประกอบ ของอาร์เรย์โดยอัตโนมัติ ตัวที่สองจะได้รับหมายเลขตำแหน่งในอาร์เรย์ (ดัชนี) และตัวที่สามคืออาร์เรย์นั้นเอง

โครงสร้าง

javascriptlet อาร์เรย์ใหม่ = อาร์เรย์.filter(function(องค์ประกอบ, ดัชนี, อาร์เรย์) {
  โค้ด
  return true หรือ false
});

ตัวอย่าง

มาทำการกรองอาร์เรย์ โดยคงไว้เฉพาะ ตัวเลขบวก:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(function(elem) {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

ผลลัพธ์การทำงานของโค้ด:

javascript[5, 1, 1, 3, 4]

ตัวอย่าง

ย่อโค้ดโดยใช้ ฟังก์ชันลูกศร:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

ผลลัพธ์การทำงานของโค้ด:

javascript[5, 1, 1, 3, 4]

ตัวอย่าง

ย่อโค้ดโดยใช้ การย่อ การดำเนินการทางตรรกะ:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  return elem >= 0;
});

console.log(res);

ผลลัพธ์การทำงานของโค้ด:

javascript[5, 1, 1, 3, 4]

ตัวอย่าง

ย่อโค้ดโดยใช้ คุณลักษณะของฟังก์ชันลูกศร:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => elem > 0);

console.log(res);

ผลลัพธ์การทำงานของโค้ด:

javascript[5, 1, 1, 3, 4]

ตัวอย่าง

หากจำเป็น สามารถส่ง อาร์เรย์เองเป็นพารามิเตอร์ตัวที่สาม:

javascriptlet res = arr.filter(function(elem, index, arr) {
  อาร์เรย์ arr จะสามารถเข้าถึงได้ที่นี่
});

ดูเพิ่มเติม

  • วิธี map และ forEach,
    ซึ่งช่วยให้ใช้ฟังก์ชันกับแต่ละองค์ประกอบของอาร์เรย์ได้
  • วิธี some และ every,
    ทำการตรวจสอบอาร์เรย์
  • วิธี reduce และ reduceRight,
    ยุบอาร์เรย์ให้เหลือค่าเดียว