[英]How to sort object by value if key has value and object in JavaScript
I have an array of JavaScript objects that contain an object which includes a price attribute.我有一个 JavaScript 对象数组,其中包含一个包含价格属性的对象。 How to sort it by price?
如何按价格排序?
Following is my input array.以下是我的输入数组。
const products = [
{
ratingReviews: '264 отзыва',
price: {
oldUan: '4 333 грн',
newUan: '3 799 грн',
},
name: 'Motorola MOTO G4 (XT1622) Black',
}, {
ratingReviews: '488 отзывов',
price: '6 199 грн',
name: 'Samsung Galaxy J7 (2016) J710F/DS Gold + защитное стекло + чехол!',
}, {
ratingReviews: '198 отзывов',
price: {
oldUan: '3 495 грн',
newUan: '2 995 грн',
},
name: 'Lenovo K5 (A6020a40) Silver',
}]
Below is my code and it is not working correctly.下面是我的代码,它无法正常工作。
function makeNumber(string) {
const reg = /\d+/g
if(reg.test(string)){
let numberStr = string.match(reg)
const number = [...numberStr]
return +number.join('')
}
return ''
}
function compare(a, b) {
if (b.price.hasOwnProperty('newUan')) {
b = makeNumber(b.price.newUan)
a = makeNumber(a.price.newUan)
} else {
b = makeNumber(b.price)
a = makeNumber(a.price)
}
return b - a
}
const sortedByPrice = () => {
return products.sort(compare)
}
Your compare method should need some modifications.您的比较方法应该需要一些修改。
function compare(a, b) {
if (a.price.hasOwnProperty('newUan')) {
a = makeNumber(a.price.newUan)
}
if (b.price.hasOwnProperty('newUan')) {
b = makeNumber(b.price.newUan)
}
b = makeNumber(b.price)
a = makeNumber(a.price)
return b - a
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.