rksh
rksh

Reputation: 4050

Regex through array of objects

I have an array that has around 1000 elements, for example:

var peoples = [
  { "name": "bob", "dinner": "pizza" },
  { "name": "john", "dinner": "sushi" },
  { "name": "larry", "dinner": "hummus" },
  { "name": "jacob", "dinner": "pizza" }
............];

I want to search the "dinner"s element of the array with a regex, so it doesn't has to be the exact type. For example, let's say the input is "piz"; it should then return all the matching elements as an array. In the example above, it should return:

var result = [{ "name": "bob", "dinner": "pizza" },
{ "name": "jacob", "dinner": "pizza" }]

I know how to search a string using the .match function in javascript, but I don't know how to use a similar function in an array. How can I do this?

Upvotes: 1

Views: 6153

Answers (1)

Oleksandr T.
Oleksandr T.

Reputation: 77522

You can use .filter with dynamic RegExp, like this

var search = "piz";
var condition = new RegExp(search);

var peoples = [
  { "name": "bob", "dinner": "pizza" },
  { "name": "john", "dinner": "sushi" },
  { "name": "larry", "dinner": "hummus" },
  { "name": "jacob", "dinner": "pizza" }
];

var result = peoples.filter(function (el) {
  return condition.test(el.dinner);
});

console.log(result);

Upvotes: 9

Related Questions