Tôi có một mảng như thế này:Count và sắp xếp theo số lần xuất hiện
var items = [
{name: 'popcorn', category: 'snacks'},
{name: 'nachos', category: 'snacks'},
...
{name: 'coke', category: 'drinks'}
];
Tôi muốn có được một danh sách các loại theo yêu cầu của số lượng các mục trên đó (hầu hết các mặt hàng đầu tiên):
['snacks', 'drinks']
Sau đây là cách tôi đã làm nó:
var categories = _.chain(items)
.countBy(function (i) { return i.category })
.pairs()
.sortBy(function (c) { return -c[1] })
.map(function (c) { return c[0] })
.value();
Vì vậy, kết quả của countBy
là một đối tượng, và tôi phải sử dụng pairs
để chuyển đổi nó thành một mảng các mảng để sắp xếp nó.
Tôi tự hỏi có cách nào đơn giản hơn để làm điều đó không? Tích hợp chức năng?
Bạn chỉ có thể vượt qua 'category' vào chức năng countBy. Làm cho nó một chút teeny weeny chút biểu cảm hơn. –
Sẽ không có giá trị trả về trông giống như [['đồ ăn nhẹ', 10] ['đồ uống', 9]]? – JSager
@ JSager oops Tôi quên bước bản đồ. Đã sửa. –