javascript中的比较和筛选对象数组
如何确定最便宜和最快的速率,并在单个对象中获得值javascript中的比较和筛选对象数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,如何确定最便宜和最快的速率,并在单个对象中获得值 最便宜的是通过使用网络费具有最小值 最快的是通过使用速度拥有更少的天数 最佳通过使用金额具有最高值 我被卡住了,告诉我有没有其他的解决办法 var result = getValue(obj); getValue(obj){ var cheapest= Math.min.apply(Math, obj.map(function (el) { return el.netfee; })); var best= Math
是通过使用最便宜的
具有网络费
最小值
是通过使用最快的
拥有速度
更少的天数
通过使用最佳
具有金额
最高值
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:“样本1”,网络费:10,速度:“1天”,金额:“100”},
{id:“sample2”,网费:6,速度:“2天”,金额:“200”},
{id:“样本3”,网络费:4,速度:“3天”,金额:“50”}
];
变量
最便宜=对象减少((acc,cur)=>(acc.netfee(parseInt(acc.speed,10)(会计科目数量>会计科目数量?会计科目:当前)).id;
console.log(“cheapest=”,cheapest)
console.log(“faster=”,faster)
console.log(“best=,best)
您可以应用此技巧,以获得预期输出中的答案:
var obj=[
{
id:“样本1”,
网费:10,,
速度:“1天”,
金额:“100”
},
{
id:“样本2”,
网费:6,,
速度:“2天”,
金额:“200”
},
{
id:“样本3”,
网费:4,
速度:“3天”,
金额:“50”
}
];
var结果=getValue(obj);
函数getValue(obj){
var cheapest=obj.reduce((acc,next)=>acc.netfeeparseInt(acc.speed)+会计科目金额>+下一个金额?会计科目:下一个)。id;
var res=Object.assign({}{
最便宜的,
最快的,
最好的
});
返回res;
}
控制台日志(结果)代码>在没有设置基础的情况下不要使用parseInt,比如parseInt(acc.speed,10)。它为您节省了大量调试时间,“到底发生了什么事?”键入questions.@muka.gergely我想如果parseInt方法的string
参数以0x或0以外的任何值开头,那么radix
参数默认为10?可能是这样的,但是在代码片段中没有任何东西可以保证-你可以有0.5天的速度(只要代码允许),而且它比抱歉更安全:)哦,是的,你有一个理由:)return{cheapest,faster,best}代码>执行相同的操作;)对于信息+acc.amount
比Number(acc.amount)
@MrJ真的吗??好吧,jsperf.com告诉我的不是这样,看看吧。?我认为这种性能测试在这种情况下是无效的。该测试应针对少于10个回路进行,并使用表格中的数字和负值;因此,我们可以更好地判断解释器JS的工作,而不必启动操作优化程序。哦,是的,我理解你的观点。
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