2016-11-24 4 views
1

У меня есть массив объектов, например, так:lodash содержание объекта SortBy

var quantityPricing = [ 
    { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 1000, cost: 0.25 }, 
    { quantity: 500, cost: 0.35 } 
]; 

Я пытаюсь SortBy содержимого этого массива в порядке возрастания на основе количества, так что результат я ожидал должен быть:

[ 
    { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 500, cost: 0.35 }, 
    { quantity: 1000, cost: 0.25 } 
] 

поэтому я попытался использовать команду lodash:

_.sortBy(quantityPricing, ['quantity']); 

Но, к сожалению Ресул т, который возвращается функцией, как представляется, сортируются только по первой цифре в количестве, например:

{ 
    "quantity": 1, 
    "cost": 0.5 
}, 
{ 
    "quantity": 100, 
    "cost": 0.45 
}, 
{ 
    "quantity": 1000, 
    "cost": 0.25 
}, 
{ 
    "quantity": 500, 
    "cost": 0.35 
} 

Я не понимаю, почему 500 приходит в конце концов, если она не сортирует по первой цифре только ? По мере того, как мой массив будет отсортирован, 500 будет приходиться после 100.

Любая помощь была бы принята с благодарностью.

+0

что, если количество будет то же самое, так что вы ожидаете их стоимость будет в порядке возрастания ? – Mahi

ответ

2

Lodash sortBy не изменяет исходный массив и он должен возвращать новый массив. Вы печатаете исходный массив?

Test с этим кодом и он работает:

var arr = _.sortBy(quantityPricing, 'quantity'); 
console.log(arr); 

Результат:

[ { quantity: 1, cost: 0.5 }, 
    { quantity: 100, cost: 0.45 }, 
    { quantity: 500, cost: 0.35 }, 
    { quantity: 1000, cost: 0.25 } ] 
1

Ваш код на самом деле делает работу (как указал @drinchev).

  1. Перейти к https://lodash.com/docs/ (который имеет lodash загружен как глобальная переменная)
  2. Откройте консоль Javascript в браузере.
  3. Вставьте этот код и нажмите возвращения:

    _.sortBy([ 
        { quantity: 1, cost: 0.5 }, 
        { quantity: 100, cost: 0.45 }, 
        { quantity: 1000, cost: 0.25 }, 
        { quantity: 500, cost: 0.35 } 
    ], ['quantity']); 
    

Это будет выглядеть следующим образом:

sortBy() example

Смежные вопросы