正则表达式通过对象数组

rks*_*ksh -1 javascript regex arrays

我有一个大约有 1000 个元素的数组,例如:

var peoples = [
  { "name": "bob", "dinner": "pizza" },
  { "name": "john", "dinner": "sushi" },
  { "name": "larry", "dinner": "hummus" },
  { "name": "jacob", "dinner": "pizza" }
............];
Run Code Online (Sandbox Code Playgroud)

我想"dinner"用正则表达式搜索数组的s 元素,所以它不必是确切的类型。例如,假设输入是"piz"; 然后它应该将所有匹配的元素作为数组返回。在上面的例子中,它应该返回:

var result = [{ "name": "bob", "dinner": "pizza" },
{ "name": "jacob", "dinner": "pizza" }]
Run Code Online (Sandbox Code Playgroud)

我知道如何使用.matchjavascript 中的函数搜索字符串,但我不知道如何在数组中使用类似的函数。我怎样才能做到这一点?

Ale*_* T. 5

您可以使用.filter动态RegExp,这样

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);
Run Code Online (Sandbox Code Playgroud)