gpt4 book ai didi

Javascript - 根据对象值对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-30 09:32:12 25 4
gpt4 key购买 nike

所以我试图根据对象值对我的数组进行排序..

var mostCheapHistory [ { lowestTitle: title goes here, lowestPrice: 100 }, another obj, another, another } ]

我想根据价格对它们进行排序,所以我想到了这个:

var historyObj = mostCheapHistory[0];

for(var y in mostCheapHistory){
nextObj = mostCheapHistory[y];

console.log('Is '+ historyObj.lowestPrice + ' more as ' + nextObj.lowestPrice + ' ?');
console.log(historyObj.lowestPrice > nextObj.lowestPrice);
console.log('-----')
}

这是输出...

Is 124.98 more as 124.98 ?
false
-----
Is 124.98 more as 18.59 ?
false
-----
Is 124.98 more as 25.9 ?
false
-----
Is 124.98 more as 26.99 ?
false
-----
Is 124.98 more as 34.76 ?
false
-----

这到底是怎么回事?很明显 124.98 更像是 34.76,但它给出的是错误的?

数组是使用以下代码制作的:

for(var x=0; x < items.length; x++){
var title = items[x].title[0];
var price = items[x].sellingStatus[0].currentPrice[0].__value__;

var item =
{
lowestPrice : price,
lowestTitle : title
}

if(x === 0){
mostCheapHistory.push(item);
}
else{
for(var y=0; y < mostCheapHistory.length; y++){
if(mostCheapHistory[y].lowestPrice > price ){
if(mostCheapHistory.length < 5){
mostCheapHistory.push(item);
break;
}
else{
mostCheapHistory[y] = item;
break;
}
}
}
}
}

最佳答案

使用预定义的排序函数:

mostCheapHistory.sort(function(a,b){
return a.lowestPrice - b.lowestPrice;
}

+ 您的代码可能会推送字符串而不是数字,这解释了为什么 124.98 > 34.76 => true'124.98' > '34.76' => false,因为在字符串比较中,字符串 '34.76' 大于 '124.98'。
使用 parseFloat() 获取价格,然后再次检查。

关于Javascript - 根据对象值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com