Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组中的对象排序不正确_Javascript_Arrays_String_Sorting_Object - Fatal编程技术网

Javascript 数组中的对象排序不正确

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

我如何按newUan价格和price对该数组进行排序?如果有更多代码,则函数将被错误排序 我写了代码,但工作不正确

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(“,”)
删除排序回调中的空格。