[英]How to sort object by value if key has value and object in JavaScript
我有一個 JavaScript 對象數組,其中包含一個包含價格屬性的對象。 如何按價格排序?
以下是我的輸入數組。
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',
}]
下面是我的代碼,它無法正常工作。
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)
}
您的比較方法應該需要一些修改。
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.