簡體   English   中英

如果鍵在 JavaScript 中具有值和對象,如何按值對對象進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM