Javascript 给定一个JSON对象,如何基于键查找项?

Javascript 给定一个JSON对象,如何基于键查找项?,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,给定一个JSON对象,如: var data = {items: [ {value: "21", name: "Mick Jagger"}, {value: "43", name: "Johnny Storm"}, {value: "46", name: "Richard Hatch"}, {value: "54", name: "Kelly Slater"}, {value: "55", name: "Rudy Hamilton"}, {value: "79", name: "Michael

给定一个JSON对象,如:

var data = {items: [
{value: "21", name: "Mick Jagger"},
{value: "43", name: "Johnny Storm"},
{value: "46", name: "Richard Hatch"},
{value: "54", name: "Kelly Slater"},
{value: "55", name: "Rudy Hamilton"},
{value: "79", name: "Michael Jordan"}
]};
我怎样才能做这样的事情:

datagood = data.where(value == 55)
JS/jQuery是否可以实现类似的功能?谢谢

jLinq

可用于过滤阵列:

var datagood = $.grep(data.items, function (item) {
    return item.value == 55;
});
如果您想要更强大的实用程序,请查看

或者,对于数组/对象操作也很有用。

var data={items:[
var data = {items: [
{value: "21", name: "Mick Jagger"},
{value: "43", name: "Johnny Storm"},
{value: "46", name: "Richard Hatch"},
{value: "54", name: "Kelly Slater"},
{value: "55", name: "Rudy Hamilton"},
{value: "79", name: "Michael Jordan"}
]};

// using underscore.js http://documentcloud.github.com/underscore/
var t = _(data.items).find(function(x) {
  return x.value == 55;
});

JSON.stringify(t) ; //# => {"value":"55","name":"Rudy Hamilton"}

// using pure javascript
var find = function(items, f) {
  for (var i=0; i < items.length; i++) {
    var item = items[i];
    if (f(item)) return item;
  };
}

t = find(data.items, function(x) {return x.value == "55";});

JSON.stringify(t) ; //# => {"value":"55","name":"Rudy Hamilton"}
{值:“21”,名称:“Mick Jagger”}, {值:“43”,名称:“Johnny Storm”}, {值:“46”,名称:“Richard Hatch”}, {值:“54”,名称:“Kelly Slater”}, {值:“55”,名称:“鲁迪·汉密尔顿”}, {值:“79”,名称:“迈克尔·乔丹”} ]}; //使用下划线.jshttp://documentcloud.github.com/underscore/ var t=389;(data.items).find(函数(x){ 返回x.value==55; }); JSON.stringify(t);/#=>{“value”:“55”,“name”:“Rudy Hamilton”} //使用纯javascript var find=函数(项,f){ 对于(变量i=0;i{“value”:“55”,“name”:“Rudy Hamilton”}
您可以使用或库u.where()和u.find()函数:

var res1 = _.where(data.items,{value:"55"});
var res2 = _.find(data.items,{value:"55"});
这两个函数之间的区别是u.where()返回所有匹配的记录,而u.find()只返回第一条记录

var数据={项:[
{值:“21”,名称:“Mick Jagger”},
{值:“43”,名称:“Johnny Storm”},
{值:“46”,名称:“Richard Hatch”},
{值:“54”,名称:“Kelly Slater”},
{值:“55”,名称:“鲁迪·汉密尔顿”},
{值:“79”,名称:“迈克尔·乔丹”},
{值:“55”,名称:“另一个鲁迪·汉密尔顿”}
]};
var res1=551; where(data.items,{value:“55”});
var res2=2;.find(data.items,{value:“55”});
document.write('-.where():',JSON.stringify(res1),'
'); document.write('-.find():',JSON.stringify(res2),'
')