javascript - 在 javascript 中比较和过滤对象数组
问题描述
如何确定最便宜和最快的费率并获得单个对象的价值。
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
推荐阅读
- angular - 从“createAction”函数获取类型
- flutter - 在 onChanged TextForm 字段值中将字符串更改为 int
- c# - 是否可以在列表视图单元格上禁用/设置单击效果的颜色?
- php - Laravel 8.x - 在 Cloudflare 和负载均衡器后面运行时出现 403 无效签名
- r - 第一行和第一列作为r中表格的标题
- python - Python 错误:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- excel - 识别 Excel 文件是否在 OneDrive 上打开
- php - 在 Firebase 中使用带有嵌套嵌套键的 .indexOn
- javascript - 不确定如何使用更新的数组更新此图表
- c# - 在三个条件下具有 T 的函数中返回一个真实实例?