I have an array of objects:

Object = {
   1 : { name : bob , dinner : pizza },
   2 : { name : john , dinner : sushi },
   3 : { name : larry, dinner : hummus }
}

我希望能够在对象/数组中搜索关键字"晚餐"的位置,并查看它是否与"寿司"匹配.

我知道jQuery有美元.inArray,但它似乎不适用于对象array.也许我错了.indexOf似乎也只能在一个数组级别上工作.

Is there no function or existing code for this?

推荐答案

If you have an array such as

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

您可以使用Array对象的filter方法:

people.filter(function (person) { return person.dinner == "sushi" });
  // => [{ "name": "john", "dinner": "sushi" }]

In newer JavaScript implementations you can use a function expression:

people.filter(p => p.dinner == "sushi")
  // => [{ "name": "john", "dinner": "sushi" }]

你可以用map搜索拥有"dinner": "sushi"的人

people.map(function (person) {
  if (person.dinner == "sushi") {
    return person
  } else {
    return null
  }
}); // => [null, { "name": "john", "dinner": "sushi" }, null]

or a reduce

people.reduce(function (sushiPeople, person) {
  if (person.dinner == "sushi") {
    return sushiPeople.concat(person);
  } else {
    return sushiPeople
  }
}, []); // => [{ "name": "john", "dinner": "sushi" }]

我确信您能够将其概括为任意键和值!

Jquery相关问答推荐

JQuery AJAX数据表保留前导零

多个 AJAX 调用;获取所有失败的呼叫

哪个 JQuery Select 器会排除与给定 Select 器匹配的父项的项目?

更改高亮 colored颜色

Jquery如何通过数组中的属性查找对象

$.each() 与 for() 循环 - 和性能

jQuery $(document).ready () 触发两次

对自定义属性执行客户端验证

在不使用提交按钮的情况下触发标准 HTML5 验证(表单)?

jQuery用另一个类替换一个类

获取元素的底部和右侧位置

jQuery - 多个 :not Select 器

隐藏 div 但保留空白

如何签入用户已在 Google recaptcha 中选中复选框的 js?

如何使用 JQuery 创建一个新的 img 标签,其中包含来自 JavaScript 对象的 src 和 id?

滚动 DIV 元素时如何防止页面滚动?

javascript jquery单选按钮单击

Select jQuery UI 自动完成后清除表单字段

jQuery - 从元素内部 Select 元素

在jQuery中,当它们都具有相同的名称时,如何获取单选按钮的值?