使用密钥从json数组中获取json对象

时间:2015-03-14 06:58:17

标签: javascript jquery arrays json

我有一个包含一些json对象的json数组。假设我有一个course这样的对象:

{"name": "Math", "unit": "3"}

我的json数组看起来像这样:

[{"name": "Math", "unit": "3"}, {"name": "Physics", "unit": "3"}, ...]

现在我需要用它的名字来获取一个对象。例如,我想用"数学"名称。我知道可以循环遍历每个数组项并检查每个项目名称并返回一个名称等于的对象"数学",但我的数组可能太长而且这不好循环遍历长数组。这可以通过索引访问数组中的对象,例如array[0]将等于{"name": "Math", "unit": "3"}。但我想用密钥访问数组,而不是索引。  这样做有什么更好的解决方案吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以使用jQuery的.grep()

var newArray = $.grep(obj, function(item){ return item.name == "Math"; });

答案 1 :(得分:2)

如果你需要对这个数组进行乘法查询,我建议你使用下面的代码将数组转换为json对象:

var newObj = yourArray.reduce(function(previousValue, currentValue, index, array) {
  return previousValue[currentValue.name] = currentValue;
}, {});

你会得到:

{"Math":{"name": "Math", unit: "3"}, "Physics":{"name": "Physics", unit: "3"}, ...}

您只需循环一次,但稍后可以重复使用。