Home > Net >  find a word inside array propety inside object
find a word inside array propety inside object

Time:12-02

How can i iterate this object, and his properties that have arrays, to fin a word that is inside of array, for example beats

[ { mouse: 'lenovo',
    teclado: 'dell',
    monitor: 'hp',
    headset: [ 'audioTechnica', 'klipXtreme', 'beats' ] },
  { mouse: 'razor',
    teclado: 'think pad',
    monitor: 'lg',
    headset: [ 'random', 'hyperx', 'jbl' ] },
  { mouse: 'technet',
    teclado: 'red dragon',
    monitor: 'benq',
    headset: [ 'sony', 'senheiser', 'toshiba' ] } ]

CodePudding user response:

You want to find object in this array, which properties has some string, correct?

If that's what you are looking for, here is some quick tip: you should iterate over array (maybe, using "find") and then for each object iterate over it's props, and then check if it has a string you are looking for.

Implementation example:

let searchPhrase = 'razor';

array.find(item => {
  Object.keys(item).find(key => typeof item[key] === 'string' ? 
    item[key] === searchPhrase : 
    item[key].includes(searchPhrase)
  )
)

Please be aware that this code relies on the fact that the object's properties are only string or array. If you are not sure about that fact, some additional checks required.

CodePudding user response:

You can use recursion to traverse over all object levels:

const trav = (obj) => {
  if (obj instanceof Array) {
    obj.forEach(item => trav(item))
  } else if (typeof obj === "object") {
    Object.keys(obj).forEach(key => {
      trav(obj[key])
    })
  } else if(typeof obj === "string"){
    if(obj === "beats") {
      console.log('Find it')
    }
  }
}
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related