我有一个数组:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
我无法更改阵列的结构。我收到了一个45的id,我想得到数组中该对象的“bar”。
如何在JavaScript或使用jQuery实现这一点?
我有一个数组:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
我无法更改阵列的结构。我收到了一个45的id,我想得到数组中该对象的“bar”。
如何在JavaScript或使用jQuery实现这一点?
当前回答
最短,
var theAnswerObj = _.findWhere(array, {id : 42});
其他回答
myArray.filter(function(a){ return a.id == some_id_you_want })[0]
此解决方案也可能有帮助:
Array.prototype.grep = function (key, value) {
var that = this, ret = [];
this.forEach(function (elem, index) {
if (elem[key] === value) {
ret.push(that[index]);
}
});
return ret.length < 2 ? ret[0] : ret;
};
var bar = myArray.grep("id","45");
我将其设置为$.grep,如果找到一个对象,函数将返回该对象,而不是数组。
更通用和简短
function findFromArray(array,key,value) {
return array.filter(function (element) {
return element[key] == value;
}).shift();
}
在您的示例中,Ex.varelement=findFromArray(myArray,'id',45),它将为您提供整个元素。
考虑“axesOptions”是对象数组,对象格式为{:字段类型=>2,:字段=>[1,3,4]}
function getFieldOptions(axesOptions,choice){
var fields=[]
axesOptions.each(function(item){
if(item.field_type == choice)
fields= hashToArray(item.fields)
});
return fields;
}
你可以试试Sugarjshttp://sugarjs.com/.
它在Arrays上有一个非常好的方法,.find。所以你可以找到这样的元素:
array.find( {id: 75} );
您还可以向其传递具有更多财产的对象,以添加另一个“where-clause”。
请注意,Sugarjs扩展了本地对象,有些人认为这非常邪恶。。。