这里是我的阵列在JavaScript的数组查找ID为对象最大值对象
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'},etc.]
我想找到ID对象的JavaScript对象的数组以上。
一般我用grep()
用于查找数组这样
var result = $.grep(myArray, function(e){ return e.id == 73; });
但在这种情况下,我需要提供ID值,我想选择。
这里是我的阵列在JavaScript的数组查找ID为对象最大值对象
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'},etc.]
我想找到ID对象的JavaScript对象的数组以上。
一般我用grep()
用于查找数组这样
var result = $.grep(myArray, function(e){ return e.id == 73; });
但在这种情况下,我需要提供ID值,我想选择。
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}];
var maxid = 0;
myArray.map(function(obj){
if (obj.id > maxid) maxid = obj.id;
});
alert(maxid);
这会给你数组中对象的最大值。
然后你就可以使用grep来获得相关的对象:
var maxObj = $.grep(myArray, function(e){ return e.id == maxid; });
问题指出,他希望找到对象以最大的ID,而不仅仅是最大的ID ...
var myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}];
var max = myArray.reduce(function(prev, current) {
if (+current.id > +prev.id) {
return current;
} else {
return prev;
}
});
// max == {'id':'73','foo':'bar'}
function reduceBy(reducer, acc) {
return function(by, arr) {
return arr[arr.reduce(function(acc, v, i) {
var b = by(v);
return reducer(acc[0], b) ? [b, i] : acc;
}, acc || [by(arr[0]), 0])[1]];
};
}
var maximumBy = reduceBy(function(a,b){return a<b;});
var myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}];
console.log(maximumBy(function(x){
return parseInt(x.id,10)
}, myArray)); // {'id':'73','foo':'bar'}
var max = 0;
var myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}]
var maxEle = myArray.map(function(ele){ if(ele.id>max){ max=ele} });
地图是一个函数,它遍历阵列的Elemen并执行特定的操作。
尝试不使用jQuery。 – Bergi