2014-03-28 98 views
4

这里是我的阵列在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值,我想选择。

+0

尝试不使用jQuery。 – Bergi

回答

7
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; }); 
6

问题指出,他希望找到对象以最大的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'} 
0
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'} 
1
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并执行特定的操作。