簡體   English   中英

在javascript中比較和過濾對象數組

[英]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.gergelyparseInt(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM