[英]Compare and Filter Object Array in javascript
如何確定最便宜和最快的速率並獲得單個對象的值。
cheapest
是通過使用具有least value
netfee
來確定的 fastest
是通過使用確定的speed
具有less days
highest value
amount
來確定best
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)
評論parseInt(acc.speed,10)
(指定使用基數10)
for memo: 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.