Kri*_*Dey 7 javascript arrays jquery object
在我的对象数组中,我想找到id属性值最高的对象.
这是我的数组:
myArray = [
{
'id': '73',
'foo': 'bar'
},
{
'id': '45',
'foo': 'bar'
},
// …
];
Run Code Online (Sandbox Code Playgroud)
通常我用来$.grep在数组中查找值,如下所示:
var result = $.grep(myArray, function(e){
return e.id == 73;
});
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我需要为id我想要选择的对象提供一个特定的值.
Abo*_*zlR 12
const students = [
{ id: 100, name: 'Abolfazl', family: 'Roshanzamir' },
{ id: 2, name: 'Andy', family: 'Madadian' },
{ id: 1500, name: 'Kouros', family: 'Shahmir' }
]
Run Code Online (Sandbox Code Playgroud)
如果要查找具有 max Id 的对象:
const item = students.reduce((prev, current) => (+prev.id > +current.id) ? prev : current)
// it returns { id: 1500, name: 'Kouros', family: 'Shahmir' }
Run Code Online (Sandbox Code Playgroud)
如果您想找到具有 min Id 的对象:
const item = students.reduce((prev, current) => (+prev.id < +current.id) ? prev : current)
// it returns {id: 2, name: "Andy", family: "Madadian"}
Run Code Online (Sandbox Code Playgroud)
如果您想找到最大 Id:
const max = Math.max.apply(null, students.map(item => item.id));
// it returns 1500
Run Code Online (Sandbox Code Playgroud)
如果你想找到min Id:
const min = Math.min.apply(null, students.map(item => item.id));
// it returns 2
Run Code Online (Sandbox Code Playgroud)
Don*_*nal 11
使用数组的map()方法.使用map,您可以提供迭代数组中每个元素的函数.在该函数中,您可以计算出具有最高id的对象.例如:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}];
var maxid = 0;
myArray.map(function(obj){
if (obj.id > maxid) maxid = obj.id;
});
Run Code Online (Sandbox Code Playgroud)
这将为您提供数组中对象的最大ID.
然后你可以使用grep来获取相关的对象:
var maxObj = $.grep(myArray, function(e){ return e.id == maxid; });
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想要具有最大ID的对象,则可以执行以下操作:
var maxid = 0;
var maxobj;
myArray.map(function(obj){
if (obj.id > maxid) maxobj = obj;
});
//maxobj stores the object with the max id.
Run Code Online (Sandbox Code Playgroud)
mbc*_*ute 10
问题是他想要找到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'}
Run Code Online (Sandbox Code Playgroud)