从JavaScript对象中的键中查找最大值

从JavaScript对象中的键中查找最大值,javascript,Javascript,我的目标如下: var questions = [{ 'question_id': 245, 'question': 'Question 1', 'ordinal': 1, 'master_difficulty': 1, 'overridden_difficulty': '' },{ 'question_id': 34, 'question': 'Question 2', 'ordinal': 2, 'master_diff

我的目标如下:

var questions = [{
    'question_id': 245,
    'question': 'Question 1',
    'ordinal': 1,
    'master_difficulty': 1,
    'overridden_difficulty': ''
},{
    'question_id': 34,
    'question': 'Question 2',
    'ordinal': 2,
    'master_difficulty': 1,
    'overridden_difficulty': ''
},{
    'question_id': 656,
    'question': 'Question 3',
    'ordinal': 3,
    'master_difficulty': 1,
    'overridden_difficulty': ''
},{
    'question_id': 86,
    'question': 'Question 4',
    'ordinal': 4,
    'master_difficulty': 1,
    'overridden_difficulty': ''
}]
我想从中得到最高的序数

e、 g.
var highestOrdinal=highestOrdinal函数(问题)

其中,
highestOrdinalFunction
将返回最高序号

因此,在本例中,它将返回
4

Math.max
可以处理这个问题吗?

我们可以按照
ordinal
值对数组中的对象进行排序,然后返回第一个条目

function highestOrdinalFunction( questions ) {
    return questions.sort( ( a, b ) => a.ordinal - b.ordinal )[ 0 ].ordinal;
}

在本例中,最好将
Array.prototype.map
Math.max()
结合使用:

Math.max.apply( null, questions.map(q => q.ordinal) );
我们可以按照
序数
值对该数组中的对象进行排序,然后返回第一个条目

function highestOrdinalFunction( questions ) {
    return questions.sort( ( a, b ) => a.ordinal - b.ordinal )[ 0 ].ordinal;
}

在本例中,最好将
Array.prototype.map
Math.max()
结合使用:

Math.max.apply( null, questions.map(q => q.ordinal) );
Array#reduce
(|)是执行以下操作的惯用方法:

function highestOrdinalFunction() {
    return questions.reduce(function(previous, entry) {
        return previous === undefined || entry.ordinal > previous ? entry.ordinal : previous;
    }, undefined);
}
Array#reduce
反复调用回调函数,传入回调函数的前一个返回值,该值与第二个参数一起播种到
reduce
。对于reduce操作,这种东西通常被称为“累加器”。
reduce
的结果是累加器的最终值

如果
questions
为空,上面将返回
undefined

Array#reduce
(|)是执行以下操作的惯用方法:

function highestOrdinalFunction() {
    return questions.reduce(function(previous, entry) {
        return previous === undefined || entry.ordinal > previous ? entry.ordinal : previous;
    }, undefined);
}
Array#reduce
反复调用回调函数,传入回调函数的前一个返回值,该值与第二个参数一起播种到
reduce
。对于reduce操作,这种东西通常被称为“累加器”。
reduce
的结果是累加器的最终值


如果
问题
为空,则上面将返回
未定义的

我想这就是您要查找的:

Math.max.apply(Math,questions.map(函数(ques){return ques.ordinal;}))


有关map()如何工作的更多信息,请参阅。

我想这就是您要寻找的:

Math.max.apply(Math,questions.map(函数(ques){return ques.ordinal;}))


有关map()如何工作的更多信息,请参阅。

您可以通过两种方式找到最大值。您可以传递一个函数来映射属性的值,也可以直接对该项调用属性。这些操作的结果将是应用于
Math.max
计算的映射值,与项目列表相关

Math.prototype.max
var问题=[
{'question_id':245,'question':'question 1','ordinal':1,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':34,'question':'question 2','ordinal':2,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':656,'question':'question 3','ordinal':3,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':86,'question':'question 4','ordinal':4,'master_-defficiency':1,'overrided_-defficiency':''
]
document.body.innerHTML='通过函数:'+highestOrdinalValueFn(问题)+'\n';
document.body.innerHTML+='Via属性:'+highestOrdinalValueProp(问题);
//#1:通过功能
函数highestOrdinalValueFn(项目){
返回最大值(项,函数(){
返回此项。序号;
});
}
//#2:通过财产
函数highestOrdinalValueProp(项目){
返回最大值(项目“序号”);
}
函数最大值(列表,道具){
返回Math.max.apply(Math,list.map)(函数(项){
返回isFunction(道具)-道具调用(道具):道具[道具];
}));
}
函数isFunction(fn){
返回fn&{}.toString.call(fn)=='[对象函数]';
}

body{whitespace:pre;font-family:monospace;}
您可以通过两种方式找到最大值。您可以传递一个函数来映射属性的值,也可以直接对该项调用属性。这些操作的结果将是应用于
Math.max
计算的映射值,与项目列表相关

Math.prototype.max
var问题=[
{'question_id':245,'question':'question 1','ordinal':1,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':34,'question':'question 2','ordinal':2,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':656,'question':'question 3','ordinal':3,'master_-defficiency':1,'overrided_-defficiency':''},
{'question_id':86,'question':'question 4','ordinal':4,'master_-defficiency':1,'overrided_-defficiency':''
]
document.body.innerHTML='通过函数:'+highestOrdinalValueFn(问题)+'\n';
document.body.innerHTML+='Via属性:'+highestOrdinalValueProp(问题);
//#1:通过功能
函数highestOrdinalValueFn(项目){
返回最大值(项,函数(){
返回此项。序号;
});
}
//#2:通过财产
函数highestOrdinalValueProp(项目){
返回最大值(项目“序号”);
}
函数最大值(列表,道具){
返回Math.max.apply(Math,list.map)(函数(项){
返回isFunction(道具)-道具调用(道具):道具[道具];
}));
}
函数isFunction(fn){
返回fn&{}.toString.call(fn)=='[对象函数]';
}

body{white space:pre;font-family:monospace;}
Math.max.apply(Math,questions.map(q=>q.ordinal))@Yoshi:应该把它作为一个答案发布。@T.J.Crowder我想这个问题肯定有很多重复的,所以我希望它会很快结束。@Yoshi:这是一个公平的观点,Ahbap也已经为我们找到了它。
Math.max.apply(Math,questions.map(q=>q.ordinal))@Yoshi:应该把它作为答案发布。@T.J.Crowder我想这个问题肯定有很多重复项,所以我希望它会很快关闭。@Yoshi:这是一个公平的观点,Ahbap也已经为我们找到了它。为了找到最高的一个,排序是一项非常艰巨的工作。你是对的TJ,math.max似乎更适合。排序是一个可怕的问题