2017-02-07 2 views
0

Это не дубликат, потому что я хочу выбрать заказ, основанный на выбранной категории пользователем.Javascript сортирует массив объектов по предоставленному пользователем значению в массиве

Попытка сортировать массив объектов по категориям массив полей i.e сортировать по выбранной пользователем категории из, возможно, выбранного списка.

Любая помощь будет высоко оценена.

var users = [ 
 
    { 'user': 'barne1y', 'age': 34, 'category':['a','b','c','d','e']}, 
 
    { 'user': 'fred', 'age': 40, 'category':['a','b','c','d']}, 
 
    { 'user': 'fred', 'age': 48, 'category':['a','b'] }, 
 
    { 'user': 'barney', 'age': 36, 'category':['a','b','c']} 
 
];

пример: У меня есть список пользователей, которые могут быть появиться в нескольких категориях, как показано в данных JSon выше, то в интерфейсе у меня есть выбранный список всех возможных категорий например

<select><option>a</option><option>b</option><option>c</option><option>d</option></select>

Если параметр например етс выбранные данных затем отсортированные с использованием этого значения, найденным в данной категории.

+0

много опечаток в вашем примере – epascarello

+0

Post пример ожидаемого результата! –

+0

Где недвижимость класса? – hackerrdave

ответ

0

Вы можете сортировать эту коллекцию с помощью Array.prototype.sort() и переходящая в функции сравнения:

var users = [ 
    { 'user': 'barne1y', 'age': 34, 'category':['a,b,c,d,e']}, 
    { 'user': 'fred', 'age': 40, 'category':['a,b,c,d']}, 
    { 'user': 'fred', 'age': 48, 'category':['a,b'] }, 
    { 'user': 'barney', 'age': 36, 'category':['a,b,c']} 
]; 

var sortedUsers = users.sort(sortByAge); 

function sortByAge(a, b) { 
    return a.age - b.age; 
} 
+0

Это была опечатка @hackerrdave, которую я с тех пор исправил. – kdev

+0

, если бы это было по возрасту, это было бы дубликат, но я хотел сортировать по категории значение, исходящее от пользователя – kdev

0

var users = [ 
 
    { 'user': 'barne1y', 'age': 34, 'category':['a','b','c','d','e']}, 
 
    { 'user': 'fred', 'age': 40, 'category':['a','b','c','d']}, 
 
    { 'user': 'fred', 'age': 48, 'category':['a','b'] }, 
 
    { 'user': 'barney', 'age': 36, 'category':['a','b','c']} 
 
]; 
 

 
users.sort(function(a, b) { 
 
    return a.category.length - b.category.length; // reverse the order if you want descending sort 
 
}); 
 

 
console.log(users);

+0

спасибо @ibrahim mahrir за ваше решение, но проблема была в том, что я хотел бы сортировать по значению, выбранному из выпадающий список. – kdev

+0

@kdev проверить ссылку на дубликат. Он имеет то, что вам нужно! –

+0

его не дубликат, так как хотите отсортировать по категориям значение, исходящее от пользователя – kdev

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