javascript - 数组中的对象排序不正确
问题描述
如何按 newUan 价格和价格对这个数组进行排序?如果有更多代码,那么函数将被错误地排序我写了代码,但它工作不正确
const sortedByPrice = () => {
const sortPrice = products.slice()
sortPrice.sort((a, b) => parseInt(b.price.newUan) - parseInt(a.price.newUan))
return sortPrice;
};
const products = [
{
ratingReviews: '264 отзыва',
price: {
oldUan: '4 333 грн',
newUan: '3 799 грн',
},
name: 'Motorola MOTO G4 (XT1622) Black',
}, {
ratingReviews: '1355 отзывов',
price: '4 999 грн',
name: 'Samsung Galaxy J7 J700H/DS Black + карта памяти 16гб + чехол + защитное стекло!',
}, {
ratingReviews: '426 отзывов',
price: '5 199 грн',
name: 'Samsung Galaxy J5 (2016) J510H/DS Black + защитное стекло + чехол!',
}];
解决方案
因为价格并不总是有newUan
属性。您可以在sort
回调中执行类似的操作,parseInt(b.price.newUan || b.price)
. 这表示如果newUan
存在将其解析为整数,但如果不存在则解析price
为整数。
我也从价格中删除了空格,以便可以正确地将其转换为整数。
请参阅下面的片段:
const products = [
{
ratingReviews: '264 отзыва',
price: {
oldUan: '4 333 грн',
newUan: '3 799 грн',
},
name: 'Motorola MOTO G4 (XT1622) Black',
},
{
ratingReviews: '1355 отзывов',
price: '4 999 грн',
name:
'Samsung Galaxy J7 J700H/DS Black + карта памяти 16гб + чехол + защитное стекло!',
},
{
ratingReviews: '426 отзывов',
price: '5 199 грн',
name: 'Samsung Galaxy J5 (2016) J510H/DS Black + защитное стекло + чехол!',
},
];
const sortedByPrice = () => {
const sortPrice = products.slice();
sortPrice.sort(
(a, b) =>
parseInt((b.price.newUan || b.price).replace(" ", "")) -
parseInt((a.price.newUan || a.price).replace(" ", ""))
);
return sortPrice;
};
console.log(sortedByPrice());
推荐阅读
- kubernetes - Istio -- 删除 istio-control-plane 进程被冻结
- android - 如何使用 Android Accessibility Services 获得点击的 View Elements?
- java - 片段活动中的不可达语句
- android - Android App中非英文字符的Json值错误
- r - 将字符向量转换为时间并提取值
- elasticsearch - Elastic Pipelines: Skip Import On Failure
- python - 如何使用 python webscraping 从 datalayer.push 获取数据数据
- vb.net - Microsoft.WinForms.ReportViewer 中的高级 SSRS 报告功能
- python - 分析这些数据时我哪里出错了?
- python - 取消嵌套/分解包含不均匀子列表的列表/元组