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函数比排序快