我正在寻找一个非常快速,干净和有效的方法来获得以下JSON切片中的最大“y”值:
[
{
"x": "8/11/2009",
"y": 0.026572007
},
{
"x": "8/12/2009",
"y": 0.025057454
},
{
"x": "8/13/2009",
"y": 0.024530916
},
{
"x": "8/14/2009",
"y": 0.031004457
}
]
for循环是唯一的方法吗?我很喜欢用Math.max。
非常简单
const array1 = [
{id: 1, val: 60},
{id: 2, val: 2},
{id: 3, val: 89},
{id: 4, val: 78}
];
const array2 = [1,6,8,79,45,21,65,85,32,654];
const max = array1.reduce((acc, item) => acc = acc > item.val ? acc : item.val, 0);
const max2 = array2.reduce((acc, item) => acc = acc > item ? acc : item, 0);
console.log(max);
console.log(max2);
谢谢你在这里找到的答案,我希望它能对别人有用。
这个typescript函数可以被调用来搜索数组对象字段中可能存在的最大值:
function getHighestField(objArray: any[], fieldName: string) {
return Number(
Math.max.apply(
Math,
objArray?.map(o => o[fieldName] || 0),
) || 0,
);
}
以这些值为例:
const scoreBoard = [
{ name: 'player1', score: 4 },
{ name: 'player2', score: 9 },
{ name: 'player3', score: 7 }
]
你可以这样调用这个函数:
const myHighestVariable = `This is the highest: ${getHighestField(scoreBoard, "score")}`;
结果会是这样的:
console.log(myHighestVariable);
这是最高的:9
// Here is very simple way to go:
// Your DataSet.
let numberArray = [
{
"x": "8/11/2009",
"y": 0.026572007
},
{
"x": "8/12/2009",
"y": 0.025057454
},
{
"x": "8/13/2009",
"y": 0.024530916
},
{
"x": "8/14/2009",
"y": 0.031004457
}
]
// 1. First create Array, containing all the value of Y
let result = numberArray.map((y) => y)
console.log(result) // >> [0.026572007,0.025057454,0.024530916,0.031004457]
// 2.
let maxValue = Math.max.apply(null, result)
console.log(maxValue) // >> 0.031004457
首先,你应该解析JSON字符串,这样你就可以很容易地访问它的成员:
var arr = $.parseJSON(str);
使用map方法提取值:
arr = $.map(arr, function(o){ return o.y; });
然后你可以在max方法中使用数组:
var highest = Math.max.apply(this,arr);
或者作为一行语句:
var highest = Math.max.apply(this,$.map($.parseJSON(str), function(o){ return o.y; }));