对象数组返回自最近日期以来的最高总体值
array of objects return the highest overall value from the latest date
我有一个类似的结构:
var array = [
{
"overall": 8,
"date": "2016-03-15",
"review": "bla bla",
},
{
"overall": 6,
"date": "2016-01-19",
"review": "asfasfsadfsd",
},
{
"overall": 7,
"date": "2016-01-23",
"review": "adfsasfdasfas",
}];
这将返回最高值:
var highestScore = Math.max.apply(Math,array.map(function(o){return o.overall;}));
如何筛选此数组以获得与最近日期的最高总体值相关的评审?在这种情况下,"bla-bla"
不需要对数组进行排序,因为您只想获得最高值。因此,使用reduce()
并使用Date.parse()
对日期字符串进行比较分析。
var array = [{
"overall": 5,
"date": "2016-03-15",
"review": "sadas sasdadasdas",
}, {
"overall": 6,
"date": "2016-01-19",
"review": "asfasfsadfsd",
}, {
"overall": 9,
"date": "2016-03-15",
"review": "sadas sasdadasdas",
}, {
"overall": 7,
"date": "2016-01-23",
"review": "adfsasfdasfas",
}];
var res = array.reduce(function(a, b) {
// parse the date
var d1 = Date.parse(a.date),
d2 = Date.parse(b.date);
// if dates are equal compare value of overall and return value , else return based on date
return d1 == d2 ? (a.overall > b.overall ? a : b) : (d1 > d2 ? a : b);
}).overall; // get overall value from final object
document.write(res);
您可以使用.sort()
。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
var array = [{
"overall": 5,
"date": "2016-03-15",
"review": "sadas sasdadasdas",
}, {
"overall": 6,
"date": "2016-01-19",
"review": "asfasfsadfsd",
}, {
"overall": 7,
"date": "2016-01-23",
"review": "adfsasfdasfas",
}];
var sortedArray = array.sort(function(a, b) {
var aDate = Date.parse(a.date);
var bDate = Date.parse(b.date);
if (aDate > bDate) {
return true;
} else if(aDate == bDate) {
return a.overall > b.overall;
} else {
return false;
}
});
//hello
var isItMeYoureLookingFor = sortedArray[0];
基本上,按照标准排序,取第一个:)。
使用纯数组迭代:
function newestHighestOverall(arr){
if(arr.length == 0) return 0;
var latestDate = new Date(arr[0].date);
var highestOverall = arr[0].overall;
for(var i=0;i<arr.length;i++){
if(latestDate < new Date(arr[i].date)){
highestOverall = arr[i].overall;
latestDate = new Date(arr[i].date);
}else if(latestDate == new Date(arr[i].date)){
highestOverall = Math.max(highestOverall, arr[i].overall);
}
}
return highestOverall
}
console.log(newestHighestOverall(array))
您可以使用sort
,首先按date
进行比较,然后按overall
进行比较,还可以返回review。
var array = [{
"overall": 8,
"date": "2016-03-15",
"review": "bla bla",
},{
"overall": 20,
"date": "2016-03-15",
"review": "Random bla bla",
}, {
"overall": 6,
"date": "2016-01-19",
"review": "asfasfsadfsd",
}, {
"overall": 7,
"date": "2016-01-23",
"review": "adfsasfdasfas",
}];
result = array.sort((a, b) => {
return Date.parse(b.date) - Date.parse(a.date) || b.overall - a.overall;
})[0].review;
console.log(result)
相关文章:
- 对象数组返回自最近日期以来的最高总体值
- 如何根据创建日期对对象进行排序,以插入Meteor的高图表
- 高图表日期时间从错误的日期开始
- 日期不能显示在高图表上
- 带有高图表的 xaxis 上的日期
- 日期未在高股价图的 x 轴上正确显示
- 高图表(高库存):从外部 CSV 获取数据,无法正确显示日期
- 将日期转换为毫秒以获得高图表日期
- 高库存 - 使用日期时间轴时在列之间放置一条线
- 为什么高图表不返回正确的日期
- 列的高图表日期时间标签
- 高图表 x轴日期时间缩放
- 动态更改高图中x轴刻度标签的日期时间格式
- 呈现高库存日期时出错
- 显示错误值的高图表日期时间转换
- 高图表日期格式没有微秒 (%f)
- 高图表 - 日期时间轴标签重叠
- 高图表日期时间标签格式不起作用
- 高库存日期输入 jquery UI 日期选择器位置更改
- 轴上的高图日期季度视图