Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
How to filter through an array of objects and list all objects containing a certain keyword in one of it's values

I am working on an array of book objects and the task is to console.log a list of all books containin "companies" or "people" in their title.

const books = [{
    title: 'How to win friends and influence people',
    authors: ['Dale Carnegie'],
    publisher: 'Pocket Books',
    year: '1936'
  }, {
    title: 'Management: tasks, responsibilities, practices',
    authors: ['Peter F. Drucker'],
    publisher: 'Harper Business',
    year: '1985'
  }, {
    title: 'Strength finder 2.0',
    authors: ['Tom Rath'],
    publisher: 'Gallup Press',
    year: '2007'
  }, {
    title: 'In search of excellence: Lessons from America\'s best-run companies',
    authors: ['Thomas Peters', ' Robert H. Waterman'],
    publisher: 'Harper Collins',
    year: '1982'
  }, {
    title: 'Built to last: Successful habits of visionary companies',
    authors: ['James C. Collins', 'Jerry I. Porras'],
    publisher: 'Harper Collins',
    year: '1994'
  }, {
    title: 'Reengineering the corporation: A manifesto for business revolution',
    authors: ['Michael Hammer', 'James A. Champy'],
    publisher: 'Harper Collins',
    year: '1993'
  }, {
    title: 'Competitive advantage: Creating and sustaining superior performance',
    authors: ['Michael E. Porter'],
    publisher: 'Free Press',
    year: '1998'
  }, {
    title: 'Crossing the chasm: Marketing and selling technology products to mainstream customers',
    authors: ['Geoffrey A. Moore', 'Regis McKenna'],
    publisher: 'Pocket Books',
    year: '1936'
  }, {
    title: '7 habits of highly effective people: Powerful lessons in personal change',
    authors: ['Stephen R. Covey'],
    publisher: 'Simon and Shuster',
    year: '1990'
  }, {
    title: 'The Six Sigma Way',
    authors: ['Peter S. Pande et al', 'Robert P. Neuman', 'Roland R. Cavanagh'],
    publisher: 'McGraw Hill',
    year: '2000'
  }, {
    title: 'The innovator\'s dilemma: When new technologies cause great firms to fail',
    authors: ['Clayton M. Christensen'],
    publisher: 'Harvard Business School Press',
    year: '1997'
  }, {
    title: 'The Essential Drucker',
    authors: ['Peter F. Drucker'],
    publisher: 'Harper Business',
    year: '2001'
  }];

So far I've tried using filter() and includes() as per below, but it's only returning books that contain the keyword "people"

let keyWord = books.filter (bookTitle => bookTitle.title.includes('people'||'companies'));
console.log(keyWord);

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

I'd suggest using Array.filter() along with Array.some() to match the desired result.

We create an array of keywords, then return any item that matches some of these.

const books = [{ title: 'How to win friends and influence people', authors: ['Dale Carnegie'], publisher: 'Pocket Books', year: '1936' }, { title: 'Management: tasks, responsibilities, practices', authors: ['Peter F. Drucker'], publisher: 'Harper Business', year: '1985' }, { title: 'Strength finder 2.0', authors: ['Tom Rath'], publisher: 'Gallup Press', year: '2007' }, { title: 'In search of excellence: Lessons from America\'s best-run companies', authors: ['Thomas Peters', ' Robert H. Waterman'], publisher: 'Harper Collins', year: '1982' }, { title: 'Built to last: Successful habits of visionary companies', authors: ['James C. Collins', 'Jerry I. Porras'], publisher: 'Harper Collins', year: '1994' }, { title: 'Reengineering the corporation: A manifesto for business revolution', authors: ['Michael Hammer', 'James A. Champy'], publisher: 'Harper Collins', year: '1993' }, { title: 'Competitive advantage: Creating and sustaining superior performance', authors: ['Michael E. Porter'], publisher: 'Free Press', year: '1998' }, { title: 'Crossing the chasm: Marketing and selling technology products to mainstream customers', authors: ['Geoffrey A. Moore', 'Regis McKenna'], publisher: 'Pocket Books', year: '1936' }, { title: '7 habits of highly effective people: Powerful lessons in personal change', authors: ['Stephen R. Covey'], publisher: 'Simon and Shuster', year: '1990' }, { title: 'The Six Sigma Way', authors: ['Peter S. Pande et al', 'Robert P. Neuman', 'Roland R. Cavanagh'], publisher: 'McGraw Hill', year: '2000' }, { title: 'The innovator\'s dilemma: When new technologies cause great firms to fail', authors: ['Clayton M. Christensen'], publisher: 'Harvard Business School Press', year: '1997' }, { title: 'The Essential Drucker', authors: ['Peter F. Drucker'], publisher: 'Harper Business', year: '2001' }];

const keyWords = ['people', 'companies'];

function findMatchingTitles(books, keyWords) { 
    return books.filter(({title}) => { 
        return keyWords.some(keyword => title.includes(keyword));
    })
}

console.log('Matching titles:');
const result = findMatchingTitles(books, ['people', 'companies']);
result.forEach(book => console.log(book.title));
.as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Can't use OR operator inside include(). So you can write the logic outside.

books.filter(book => book.title.includes('companies') || book.title.includes('people'))

If match needs to be case insensitive:

books.filter(book => {
    const titleLower = book.title.toLowerCase()
    return titleLower.includes('companies') || titleLower.includes('people')
  })
about 4 years ago · Juan Pablo Isaza Denunciar

0

you can use regex:

const peopleRegex = /people/i
const companiesRegex = /companies/i

const result = books.filter(item=>peopleRegex.test(item.title) || companiesRegex.test(item.title))

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda