如何确定最便宜和最快的速率并获得单个对象的值。
cheapest
是通过使用具有netfee
的least value
来确定的fastest
是通过使用具有speed
的less days
来确定的best
是通过使用具有amount
的highest value
来确定的我卡住了,让我们知道任何替代解决方案。
var result = getValue(obj);
getValue(obj){
var cheapest= Math.min.apply(Math, obj.map(function (el) {
return el.netfee;
}));
var best= Math.max.apply(Math, obj.map(function (el) {
return el.amount;
}));
var res= Object.assign({}, cheapest, best);
return res;
}
var obj=[
{
id: "sample1",
netfee: 10,
speed: "1days",
amount: "100"
},
{
id: "sample2",
netfee: 6,
speed: "2days",
amount: "200"
},
{
id: "sample3",
netfee: 4,
speed: "3days",
amount: "50"
}
]
Expected Output:
Cheapest : Sample 3
Fastest: Sample 1
Best: Sample 2
很简单..
var obj=[
{ id: "sample1", netfee: 10, speed: "1days", amount: "100" },
{ id: "sample2", netfee: 6, speed: "2days", amount: "200" },
{ id: "sample3", netfee: 4, speed: "3days", amount: "50" }
];
var
cheapest = obj.reduce((acc, cur)=>(acc.netfee < cur.netfee ? acc : cur)).id,
fastest = obj.reduce((acc, cur)=>(parseInt(acc.speed,10) < parseInt(cur.speed,10) ? acc : cur)).id,
best = obj.reduce((acc, cur)=>(Number(acc.amount) > Number(cur.amount) ? acc : cur)).id;
console.log( "cheapest =", cheapest )
console.log( "fastest =", fastest )
console.log( "best =", best )
[编辑]:感谢muka.gergely对parseInt(acc.speed,10)
的评论(指定使用基数10)
备忘录:console.log(parseFloat('0.7 days')
return = 0.7
您可以应用此hack,以获得预期输出中的答案:
var obj = [
{
id: "sample1",
netfee: 10,
speed: "1days",
amount: "100"
},
{
id: "sample2",
netfee: 6,
speed: "2days",
amount: "200"
},
{
id: "sample3",
netfee: 4,
speed: "3days",
amount: "50"
}
];
var result = getValue(obj);
function getValue(obj) {
var cheapest = obj.reduce((acc, next) => acc.netfee < next.netfee ? acc : next).id;
var fastest = obj.reduce((acc, next) => parseInt(acc.speed) < parseInt(next.speed) ? acc : next).id;
var best = obj.reduce((acc, next) => +acc.amount > +next.amount ? acc : next).id;
var res = Object.assign({}, {
cheapest,
fastest,
best
});
return res;
}
console.log(result);