[英]How to get largest value along with text/name from a dimensional array?
我有一个维度'dataArray',如下所示。
dataArray = [ {name:"Apples", score: 3.5}, {name:"Oranges", score: 3.7}, {name:"Grapes", score: 4.1} ];
想从dataArray获得最高分和名字吗?
function playerArray() {
dataArray = [{
name: "Apples",
score: 3.5
}, {
name: "Oranges",
score: 3.7
}, {
name: "Grapes",
score: 4.1
}];
for (i = 0; i < dataArray.length; i++) {
var nameArray = dataArray[0].name;
var scoreArray = dataArray[0].score;
var largest = Math.max.apply(Math, scoreArray);
alert(largest[0].score);
}
}
在执行'playerArray()'时,它会抛出以下错误:test.html:24未捕获的TypeError:在playerArray上的非对象上调用CreateListFromArrayLike
你可以使用Array.reduce()
let dataArray = [ {name:"Apples", score: 3.5}, {name:"Oranges", score: 3.7}, {name:"Grapes", score: 4.1} ]; let max = dataArray.reduce((acc,elem) => { return elem.score > acc.score ? elem : acc }, {name: "", score: -1}); console.log(max);
好又简单的方法:
dataArray = [ {name:"Apples", score: 3.5}, {name:"Oranges", score: 3.7}, {name:"Grapes", score: 4.1} ];
var maxScore = {name:'',score:0};
for(var i = 0; i< dataArray.length; i++){
var currElem = dataArray[i];
var currScore = currElem.score;
//keep track of highest score so far
if(maxScore.score < currScore){
maxScore.name = currElem.name;
maxScore.score = currElem.score;
}
}
console.log(maxScore)
如果你想要你也可以通过这样做来减少冗长:
if(maxScore.score < currScore){
maxScore = currElem;
}
如果你想要更优雅并避免循环加上一些变量,那么使用map
:
var maxScore = {name:'',score:0};
dataArray.map(function(elem) {
if (maxScore.score < elem.score) {
maxScore = elem
}
});
使用索引( maxIndex
)进行搜索,如下所示:
dataArray = [{ name: "Apples", score: 3.5 }, { name: "Oranges", score: 3.7 }, { name: "Grapes", score: 4.1 }]; var maxIndex = 0; for (i = 1; i < dataArray.length; i++) { if(dataArray[maxIndex].score < dataArray[i].score) maxIndex = i; } var maxObj = dataArray[maxIndex]; console.log(maxObj);
这是一个非常简单的工作,简单的减少。 我想这个.reduce()
是基本的,因为它是我们到处看到的求和数组元素的例子。
arraySum = arr.reduce((p,c) => p+c)
现在按照这个;
var data = [ {name:"Apples", score: 3.5}, {name:"Oranges", score: 3.7}, {name:"Grapes", score: 4.1} ], dataMax = data.reduce((p,c) => p.score > c.score ? p : c); console.log(dataMax);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.