如果total是大于等于0的整数,可以考虑这么写,有点不正统不过。
//模拟你的数据,最大值有可能存在好几个
var a = [{t:3},{t:5},{t:4},{t:2},{t:1},{t:33},{t:33},{t:32}];
//空数组用于算结果
var b = [];
//循环a数组赋值给b
a.map((t,i) => {
if(b[t.t]) {
b[t.t].push(i);
} else {
b[t.t] = [];
b[t.t].push(i)}
})
//获取b最后一个元素既是最大值的下标组成的数组
var maxArr = b[b.length - 1];
b数组是这样的。
思路是将total作为下标强行赋值给b数组,使b改变length,并把下标赋给b相应的数组元素上,这样最大的那个就是b数组的最后一个。
不正之处请见谅并指出,谢谢。
var data = [{
ver: '1.2.34',
total: 2,
uni_count: 0
}, {
ver: '1.2.67',
total: 11,
uni_count: 0
}, {
ver: '1.0.66',
total: 9,
uni_count: 0
}, {
ver: '1.0.64',
total: 11,
uni_count: 0
}, {
ver: '1.0.34',
total: 1,
uni_count: 0
}, {
ver: '1.0.24',
total: 11,
uni_count: 0
}, {
ver: '1.0.20',
total: 11,
uni_count: 0
}, {
ver: '1.0.08',
total: 1,
uni_count: 0
}];
//先按数组中total的大小排序数组
var sortData = data.slice().sort((a,b)=>a.total < b.total);
//按照最大的total存入数组(处理并列最大的),
var maxArr = sortData.filter((item,index)=>item.total === sortData[0].total);
//返回在原数组中下标位置,**已经能够获得最大的组数项,感觉没必要知道下标了!**
var indexArr = [];
maxArr.forEach((item,index)=>{
data.forEach((v,i)=>{
if(item.ver === v.ver){
indexArr.push(i);
}
})
});
console.log(indexArr);
var a = [{t:2},{t:5},{t:4},{t:3}];
var max = [a[0].t,0]
for (var i = 1; i < a.length; i++) {
if(a[i].t>max[0]){
max[0]=a[i].t;
max[1]=i;
}
}
console.log(max);
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决