2017-03-28 80 views
3

我有對象對象數組有不同的重點,所以我想這個數組有最小值和最小值的需求尋找,然後找到對象

list = [ 
{ 
'id':4, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':1, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':2, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':3, 
'name':'nitin', 
'group':'angularjs' 
}] 

具有最小值的對象中的JavaScript得到數組對象我試圖通過

var minValue = Math.min.apply(Math, list.map(function (o) { 
       return o.id; 
      })) 

,但我必須做出更多的過濾器獲取對象

僅返回ID不是整個對象則是有直接的方法來找到對象嗎?

+0

可能重複[比較JavaScript對象數組以獲取最小/最大](http://stackoverflow.com/questions/8864430/compare-javascript-array-of-o bject-to-get-min-max) –

回答

5

您可以使用陣列reduce方法:通過在循環

var list = [ 
 
{ 
 
'id':4, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':1, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':2, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':3, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}]; 
 

 
var result = list.reduce(function(res, obj) { 
 
    return (obj.id < res.id) ? obj : res; 
 
}); 
 

 
console.log(result);

+0

感謝您的幫助 – Nitin

0

使用Array#reduce()

list = [{ 
 
    'id': 4, 
 
    'name': 'nitin', 
 
    'group': 'angularjs' 
 
    }, 
 
    { 
 
    'id': 1, 
 
    'name': 'nitin', 
 
    'group': 'angularjs' 
 
    }, 
 
    { 
 
    'id': 2, 
 
    'name': 'nitin', 
 
    'group': 'angularjs' 
 
    }, 
 
    { 
 
    'id': 3, 
 
    'name': 'nitin', 
 
    'group': 'angularjs' 
 
    } 
 
]; 
 

 
let min = list.reduce((prev, curr) => prev.id < curr.id ? prev : curr); 
 

 
console.log(min);

0

您可以檢查具有最低ID的對象數組像所以,可能不是最巧妙的方法,但解決的辦法辦法:

var list = [ 
{ 
'id':4, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':1, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':2, 
'name':'nitin', 
'group':'angularjs' 
}, 
{ 
'id':3, 
'name':'nitin', 
'group':'angularjs' 
}] 

var tmp = list[0].id; 

list.forEach(function (entry) { 
    if (entry.id < tmp) { 
    tmp = entry; 
    } 
}); 

console.log(tmp); 

https://jsfiddle.net/camgssk3/

0

其他選擇可能是過濾你的陣列,你已經有了分鐘「身份證」

var list = [ 
 
{ 
 
'id':4, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':1, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':2, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}, 
 
{ 
 
'id':3, 
 
'name':'nitin', 
 
'group':'angularjs' 
 
}]; 
 
var min = Math.min.apply(Math, list.map(function (o) { 
 
       return o.id; 
 
      })); 
 
filtered = list.filter(function(elem){ 
 
    if(elem.id == min){console.log(elem);return elem;} 
 
})

+0

這個問題已經提到了基於'Math.min()'的結果過濾原始數組,並明確要求更直接的方法。 – nnnnnn