_.sortBy массив с несколькими вложенными объектами в JavaScript - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь отсортировать по местоположению элемента и затем помещать эти данные в таблицу, используя методы underscorejs, _.each, _.groupBy и _.sortBy

sails.log('my.items.item_location.location: ', my.items[0].item_location.location)
  _.each(_.groupBy(_.sortBy(my.items.item_location.location, 'location'), 'location'), function(locationItems) {

      itemsTable.table.body.push(my.renderItemRow(locationItems));


  });

my sails.log вверху выводит данные с 0-й позиции, и я могу убедиться, что остальная часть массива содержит определенные местоположения.

мой объект:

my.items:[  
   {  
      "p_item_id":79,
      "uid":"9c2073da-2945-4e0d-ad97-39db1a4cde16",
      "quantity":9,
      "item_location":{  
         "inbounds_items_location_id":1,
         "uid":"fJtWsFrVD",
         "sku_uid":"150-MTG-XS",
         "location":"O8",
         "quantity":171,
      },
   },
...
]

всякий раз, когда я получаю доступ к параметру location, я получаю:

TypeError: Cannot read property 'location' of undefined

что я делаю неправильно?

1 Ответ

0 голосов
/ 29 августа 2018

Вы должны получить доступ к объекту в правильном направлении. Текущий ваш доступ my.items.item_location.location неверен, потому что my.items является массивом. Следовательно, my.items не имеет свойства с именем item_location, а my.items[0] имеет.

В заключение, вы должны записать, как показано ниже

_.groupBy(_.sortBy(my.items, function(item){
    return item.item_location.location
}), function(item){
    return item.item_location.location
})
...