Computer >> Máy Tính >  >> Lập trình >> Javascript

Lọc mảng các đối tượng có thuộc tính chứa giá trị trong JavaScript

Giả sử, chúng ta có một mảng các đối tượng như thế này -

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

Chúng tôi được yêu cầu phải nghĩ ra một cách để lọc một mảng đối tượng tùy thuộc vào một từ khóa chuỗi. Việc tìm kiếm phải được thực hiện trong bất kỳ thuộc tính nào của đối tượng.

Ví dụ -

When we type "lea", we want to go through all the objects and all their properties to return the objects that contain "lea".
When we type "italy", we want to go through all the objects and all their properties to return the objects that contain italy.

Ví dụ

Mã cho điều này sẽ là -

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'));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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