Javascript 数组中的对象排序不正确
我如何按newUan价格和price对该数组进行排序?如果有更多代码,则函数将被错误排序 我写了代码,但工作不正确Javascript 数组中的对象排序不正确,javascript,arrays,string,sorting,object,Javascript,Arrays,String,Sorting,Object,我如何按newUan价格和price对该数组进行排序?如果有更多代码,则函数将被错误排序 我写了代码,但工作不正确 const sortedByPrice = () => { const sortPrice = products.slice() sortPrice.sort((a, b) => parseInt(b.price.newUan) - parseInt(a.price.newUan)) return sortPrice; }; const products
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
解析为整数
我也从prices中删除了空格,这样就可以正确地将其转换为整数
请参见下面的代码段:
const产品=[
{
评级审查:“264”,
价格:{
奥尔端:“4333Гаа”,
纽旺:“3799Гаа”,
},
名称:“摩托罗拉摩托罗拉G4(XT1622)黑色”,
},
{
评级审查:“1355年”,
价格:'4999Гаа',
姓名:
“三星Galaxy J7 J700H/DS黑色+16ааааа+1095;аазаааааааааа1072,
},
{
评级审查:“426”,
价格:'5199Γаа',
名称:“三星Galaxy J5(2016)J510H/DS Black+,
},
];
const sortedByPrice=()=>{
const sortPrice=products.slice();
排序(
(a,b)=>
parseInt((b.price.newUan | | b.price)。替换(“,”)-
parseInt((a.price.newUan | | a.price).替换(“,”))
);
返回排序;
};
log(sortedByPrice())
您可以使用|
操作符检查新币的存在,然后使用价格
的回退,并相应地继续。
另外,在price
之间不应该有空格,比如4333
。这将导致parseInt
返回4
const sortedByPrice=()=>{
const sortPrice=products.slice()
sortPrice.sort((a,b)=>{
让我们先来看看a.price.newUan | a.price;
让第二个=b.price.newUan | b.price;
返回parseInt(第二个)-parseInt(第一个);
})
返回排序;
};
常数乘积=[{
评级审查:“264”,
价格:{
oldUan:'4333Γаа′,
纽旺:“3799Гаа”,
},
名称:“摩托罗拉摩托罗拉G4(XT1622)黑色”,
}, {
评级审查:“1355年”,
价格:'4999Γаа',
名称:“三星Galaxy J7 J700H/DS Black+аааааааааа16баа+чзаааа,
}, {
评级审查:“426”,
价格:'5199Гаа',
名称:“三星Galaxy J5(2016)J510H/DS Black+,
},
{
评级审查:“426”,
价格:'2000Гаа',
名称:“三星Galaxy J5(2016)J510H/DS Black+,
}
];
console.log(sortedByPrice())
那么,如果我不需要删除数字之间的空格,我现在如何解决这个问题?@user402114我已经更新了我的答案,请检查。您可以使用replace(“,”)
删除排序回调中的空格。