JS-поиск по значениям объектов

У меня есть массив таких однородных объектов;

[
  {
    "foo" : "bar",
    "bar" : "sit"
  },
  {
    "foo" : "lorem",
    "bar" : "ipsum"
  },
  {
    "foo" : "dolor",
    "bar" : "amet"
  }
]

Я хотел бы выполнить поиск значений этих объектов (не ключей) с помощью ключевого слова и вернуть массив объектов, содержащих это ключевое слово в любом из значений.

Так, например, с ключевым словом r я бы получил все объекты («baR» в объекте №1, «loRem» в объекте №2 и «doloR» в объекте №3). С ключевым словом lo я бы получил объекты 2 и 3 («LOrem» и «doLOr»), с a я бы получил объекты 1 и 3, («bAr» и «Амет»). Однако с ключевым словом foo я бы получил пустой массив, поскольку «foo» является ключом и не встречается ни в одном из значений (в отличие от «bar») ... вы поняли идею .

Как мне это сделать? Заранее большое спасибо!

43
задан Emphram Stavanger 15 December 2011 в 08:25
поделиться

1 ответ

Столкнулся с этой проблемой сегодня, и использование измененной версии предоставленного кода epascarello добилось цели, потому что та версия испытала затруднения, когда объект содержал некоторых других значений, чем строки (как много булевских переменных, например).

console.log('find: ', findIn(arrayOfObjects, searchKey));

const findIn = (arr, searchKey) => {
 return arr.filter(obj => 
  Object.keys(obj).some(key => {
   if (typeof obj[key] === 'string') {
    return obj[key].includes(searchKey);
   }
  })
 );
};
0
ответ дан 26 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: