2017-02-07 5 views
0

ユーザが選択したカテゴリに基づいて注文を選択したいので、これは重複しません。Javascript配列のユーザ指定値によるオブジェクトの配列の並べ替え

カテゴリ配列フィールドでオブジェクトの配列をソートしようとしました、つまり、選択したリストからユーザーが選択したカテゴリでソートしようとしました。

ご協力いただければ幸いです。

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']} 
 
];

例: 私はすべての可能なカテゴリを持つ選択されたリストを持っているUIで、次いで上記のJSONデータに示されるように、複数のカテゴリに現れることができるユーザのリストを持っています例えばオプション例えば、Aは、データは、その後カテゴリに見られる値を用いて選別され選択され

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

+0

たくさんのあなたの例 – epascarello

+0

ポスト予想される結果の例では! –

+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

これはtypo @ 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

あなたのソリューションに感謝している@Brahim mahrirですが、問題は選択した値から並べ替えたいドロップダウンリスト – kdev

+0

@kdev複製物のリンクを確認してください。それはあなたが必要なものを持っています! –

+0

それはユーザーから来るカテゴリの値で並べ替えたいので重複していません – kdev

関連する問題