Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การกรองอาร์เรย์อ็อบเจ็กต์ที่คุณสมบัติมีค่าตรงกับคำค้นหาใน JavaScript


ภาพรวม

สมมติว่าเรามีอาร์เรย์ของอ็อบเจ็กต์:

const arr = [
  { name: 'Paul', country: 'Canada' },
  { name: 'Lea', country: 'Italy' },
  { name: 'John', country: 'Italy' }
];

เราต้องการกรองอาร์เรย์อ็อบเจ็กต์โดยใช้คำค้นหาสตริง การค้นหาต้องตรวจสอบทุกคุณสมบัติของอ็อบเจ็กต์

เช่น พิมพ์ "lea" -> คืนอ็อบเจ็กต์ที่มี "lea" ในคุณสมบัติใดๆ, พิมพ์ "italy" -> คืนอ็อบเจ็กต์ที่มี "italy"

ตัวอย่างโค้ด

const arr = [
  { name: 'Paul', country: 'Canada' },
  { name: 'Lea', country: 'Italy' },
  { name: 'John', country: 'Italy' }
];

const filterByValue = (arr = [], query = '') => {
  const reg = new RegExp(query, 'i');
  return arr.filter((item) => {
    let flag = false;
    for(prop in item) {
      if(reg.test(item[prop])) {
        flag = true;
      }
    }
    return flag;
  });
};

console.log(filterByValue(arr, 'ita'));

ผลลัพธ์ในคอนโซล

[
  { name: 'Lea', country: 'Italy' },
  { name: 'John', country: 'Italy' }
]