Javascript, возвращающий объекты из результатов поиска в массиве объектов - PullRequest
0 голосов
/ 01 октября 2019

Я хочу узнать, имеет ли какое-либо свойство значение моего запроса. Допустим, запрос имеет тип «Совет», и тогда он будет возвращать любой объект, содержащий эти строки в свойстве.

[
  {
  "category": "Kelas 10",
  "created": "2018-12-06 17:26:16",
  "image": "cover.jpg",
  "lessons": "1",
   "name": "Randi Eka Setiawan",
  "rate_count": "8",
   "title": "Bimbel Kimia",
  },
  {
    "category": "Kelas Skill",
    "title": "Tips & Trick Play Guitar",
   },
]

в этом случае второй объект содержит эти строки в свойстве title из "Tips & Trick Play Guitar". и он должен возвращать только второй массив ... или любые объекты со строками, поэтому у меня будет массив с правильными объектами, которые соответствуют

Я не совсем уверен, как искать правильно:

 data.filter(item => { 
 // first iterate the array ?

      Object.keys(item).map(i => {
      // then iterate the objects ?

        if(item[i] === query) {
        // compare property value contain my query ?

           return item

           //EDIT: and then return the objects that match ? shouldn't it be like that?
       }
   })
})

1 Ответ

1 голос
/ 01 октября 2019

Вы можете использовать комбинацию Array.prototype.filter() и Object.prototype.values() / Object.prototype.some(). В этом примере используется поиск строк без учета регистра, вам, вероятно, придется адаптировать его для своих нужд и при необходимости выполнить надлежащее экранирование.

var objectsIn = [
  {
  "category": "Kelas 10",
  "created": "2018-12-06 17:26:16",
  "image": "cover.jpg",
  "lessons": "1",
   "name": "Randi Eka Setiawan",
  "rate_count": "8",
   "title": "Bimbel Kimia",
  },
  {
    "category": "Kelas Skill",
    "title": "Tips & Trick Play Guitar",
   },
]

function filterObjects(objArray, filterText) {
  return objArray.filter((obj) => {
    return Object.values(obj).some(value => {
      return new RegExp(filterText, 'i').test(value);
    });
  });
}

console.log(filterObjects(objectsIn, 'Tip'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...