Javascript 如何将数组对象中的多个值作为新变量返回?

Javascript 如何将数组对象中的多个值作为新变量返回?,javascript,arrays,object,Javascript,Arrays,Object,我的数组如下所示: var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}]; 我正在尝试查看哪个类别的正确数最多。我首先在数组映射上使用Math.max来确定哪一个是最高值(它返回4),但当我尝试扩展该返回时,它开始默认为NaN var res = Math.max.apply(Math,points.map(function(k){ return k.co

我的数组如下所示:

var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}];
我正在尝试查看哪个类别的
正确数最多。我首先在数组映射上使用
Math.max
来确定哪一个是最高值(它返回
4
),但当我尝试扩展该返回时,它开始默认为NaN

var res = Math.max.apply(Math,points.map(function(k){
    return k.correct;
}));
o.correct
在本例中将返回
4


我所尝试的:

  • 将我的返回切换到
    k.category

    ->这返回“NaN”

  • 将其视为函数并将两个变量存储在
    Math.max
    中,这将提取对象的两个值,但对数组中的两个对象都会这样做

    Math.max.apply(Math,points.map)(函数(k){
    var highestCat=k类;
    var highestCor=k.正确;
    警报(最高的CAT+最高的COR);
    }));


  • 我能做些什么来将它们存储为两个独立的变量,我以后可以引用它们,你有什么想法吗

    您有
    NaN
    ,因为correct是
    字符串
    ,而不是
    数字
    。使用
    parseInt
    函数将字符串转换为整数

    因为correct是
    字符串
    而不是
    数字
    。使用
    parseInt
    函数将字符串转换为整数

    您可以对数组排序并获取第一个元素

    var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}];
    var sorted = points.sort((a,b)=>b.correct - a.correct)
    var highest = sorted[0];
    alert(highest.category + highest.correct);
    
    对象分解也是如此

    var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}];   
    var {category:highestCateogry,correct:highestCorrect} = points.sort((a,b)=>b.correct - a.correct)[0];
    alert(highestCateogry + highestCorrect); 
    

    您可以对数组进行排序并获取第一个元素

    var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}];
    var sorted = points.sort((a,b)=>b.correct - a.correct)
    var highest = sorted[0];
    alert(highest.category + highest.correct);
    
    对象分解也是如此

    var points = [{category: "Category A", correct: "0"},{category: "Category B", correct: "4"}];   
    var {category:highestCateogry,correct:highestCorrect} = points.sort((a,b)=>b.correct - a.correct)[0];
    alert(highestCateogry + highestCorrect); 
    
    你可以用

    let points=[{category:“category A”,correct:“0”},{category:“category B”,correct:“4”},{category:“category C”,correct:“1”},{category:“category D”,correct:“5”},{categegory:“categegory E”,correct:“0”};
    const max=points.reduce((currentMax,newMax)=>{
    return+currentMax.correct<+newMax.correct?newMax:currentMax
    })
    console.log(最大)
    您可以使用

    let points=[{category:“category A”,correct:“0”},{category:“category B”,correct:“4”},{category:“category C”,correct:“1”},{category:“category D”,correct:“5”},{categegory:“categegory E”,correct:“0”};
    const max=points.reduce((currentMax,newMax)=>{
    return+currentMax.correct<+newMax.correct?newMax:currentMax
    })
    
    console.log(max)
    我想将其保留为一个字符串,以便以后可以比较条件中的值。ie:
    如果highestCat=category a
    我想保留一个字符串,以便稍后比较条件中的值。ie:
    如果highestCat=category a
    我没有考虑排序,但在尝试插入此选项后,它似乎只返回
    [object]
    。看看这个。编辑:刚刚看到你对答案的编辑。当你提醒一个对象时,它隐式地调用objects-toString方法
    sorted
    是一个数组,大多数对象上的默认toString是
    [object object]
    ,最高的是排序数组中的第一个元素
    {category:“category B”,正确:“4”}
    再次使用
    [object object]
    的默认toString,因为它没有使用reduce(或任何其他循环)定义自己的toString函数比排序更快我没有考虑排序,但在尝试插入此选项后,它似乎只返回
    [object object]
    。看看这个。编辑:刚刚看到你对答案的编辑。当你提醒一个对象时,它隐式地调用objects-toString方法
    sorted
    是一个数组,大多数对象上的默认toString是
    [object object]
    ,最高的是排序数组中的第一个元素
    {category:“category B”,正确:“4”}
    再次使用
    [object object]
    的默认toString,因为它没有使用reduce(或任何其他循环)定义自己的toString函数比排序快