JSFiddle - React, Tailwind, and code Playground

by Gabriel Correa

JavaScript

const searchArray = (array, keyword) => {
  const regex = new RegExp(`.*${keyword}.*`, 'i');
  const searchKeys = ['Texto', 'Numerico', 'Data', 'Tempo'];

  const filteredArray = array.filter((element) => {
    return searchKeys.some((key) => {
      if (Array.isArray(element[key])) {
        return element[key].some((item) => {
          return item.value && item.value.match(regex) !== null;
        });
      } else if (typeof element[key] === 'object' && element[key].value) {
        return element[key].value.match(regex) !== null;
      }
      return false;
    });
  });

  return filteredArray;
}

const myArray = [
  {
    "_id": {
      "$oid": "641c7734b77962ef1019a489"
    },
    "Texto": [
      {
        "_id": "6408881dc6d5c80f4d5d33a8",
        "value": "333"
      }
    ],
    "Numerico": [
      {
        "_id": "274685",
        "value": ""
      }
    ],
    "Data": {
      "_id": "eeb55718-a153-cfcc-ee62-d15da7a0aa94",
      "value": "22/03/2023"
    },
    "Tempo": {
      "_id": "d0a3afd0-86c7-9382-0fb1-2ffc5175955a",
      "value": "09:49"
    },
    "Multipla": [
      ""
    ],
    "Unica": [
      ""
    ],
    "createdAt": [
      {
        "value": "22/03/2023 09:49:10"
      }
    ]
  },
  {
  "_id": {
    "$oid": "641c7734b77962ef1019a488"
  },
  "Texto": [
    {
      "_id": "6408881dc6d5c80f4d5d33a8",
      "value": "999"
    }
  ],
  "Numerico": [
    {
      "_id": "569457",
      "value": ""
    }
  ],
  "Data": {
    "_id": "eeb55718-a153-cfcc-ee62-d15da7a0aa94",
    "value": "22/03/2023"
  },
  "Tempo": {
    "_id": "d0a3afd0-86c7-9382-0fb1-2ffc5175955a",
    "value": "09:33"
  },
  "Multipla": [
    ""
  ],
  "Unica": [
    ""
  ],
  "createdAt": [
    {
      "value": "22/03/2023 09:33:28"
    }
  ]
},{
  "_id": {
    "$oid": "641c7734b77962ef1019a486"
  },
  "Texto": [
    {
      "_id": "6408881dc6d5c80f4d5d33a8",
      "value": "Off-line 99"
    }
  ],
  "Numerico": [
    {
      "_id": "33848",
      "value": ""
    }
  ],
...