質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

Q&A

1回答

4167閲覧

[underscore]複数条件でソートする

star24star

総合スコア115

Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

0グッド

0クリップ

投稿2017/01/24 04:17

var data_list = [ { id:1, no:900, }, { id:2, no:800, }, { id:3, no:700, }, { id:4, no:100, }, { id:5, no:100, }, ]

このような配列があったとして、
noが小さい順かつ、idが大きい順に並べ替える方法はありますでしょうか?

// 理想の結果 { id:5, no:100, // noがかぶっている場合はidが大きい順に }, { id:4, no:100, // noがかぶっている場合はidが大きい順に }, { id:3, no:700, }, { id:2, no:800, }, { id:1, no:900, // noが一番小さいデータが一番下 },

idで昇順
_.sortBy([配列], function(list){ return list.id; });
idで降順
_.sortBy([配列], function(list){ return -list.id; });

上記を組み合わせて、一度ソートした後その中で再びソートさせるなどしてみたのですが、
なかなか上手くいかず…。
ご教授いただけますと幸いでございます。宜しくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Underscoreは不要です。Array.prototype.sortMDN)に必要な関数を与えれば実行できます。

javascript

1data_list.sort(function(a,b){ 2 if(a.no-b.no!==0) return a.no-b.no; 3 return b.id-a.id; 4});

投稿2017/01/24 04:27

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

star24star

2017/01/24 04:31

有難うございます。これで色々試してみようと思います しかし可能であればunderscoreで出来るとうれしいです・・・
maisumakun

2017/01/24 04:36

どのような理由で、「Underscoreで」行いたいのでしょうか。たとえば、「もとの配列に対して直接のソートでなく、ソートした配列を別に欲しい」とか、何か理由はございますでしょうか。
star24star

2017/01/24 04:44

実装環境上、underscoreの方が好ましいといことと、underscoreの理解を高めたいからです。(もちろん、javascriptを理解していないとダメなのですが…)
maisumakun

2017/01/24 04:51

Underscoreは別に魔法でも何でもなく、ただのJavaScriptのライブラリです。「純粋なJavaScriptでそれほど手間なくできること」に対して、わざわざ「面倒なやり方をしてまでUnderscoreを無理やり使う」ことには、デメリットしかないと考えます。
star24star

2017/01/25 05:06

ご教示してくださったやり方よりもunderscoreの方が複雑になるということでしょうか?
maisumakun

2017/01/25 05:13

自分としては、そう判断しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問