2014-03-28 99 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並執行特定的操作。