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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Underscore.js

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

Q&A

解決済

3回答

13368閲覧

javascript 二次元配列でのfilter

退会済みユーザー

退会済みユーザー

総合スコア0

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Underscore.js

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

0グッド

1クリップ

投稿2016/09/26 04:37

編集2016/09/26 05:05

underscore.jsでfilter()をつかって

javascript

1var ary = [ 2 [0, 0, 0, 9], 3 [0, 0, 0, 0], 4 [0, 9, 9, 9] 5];

このような二次元配列で、

javascript

1bombNumber = _.filter(ary, function(number) { 2 return number === 9; 3 });

のようにして、9だけを検出したいのですが、「 _.filter 」 ではこの場合おそらく一次元目?を見てしまうため、空の配列になってしまいます。
うまく二次元目の各要素を検出する方法をアドバイスいただけないでしょうか。

期待する結果としては、 filterで9のみの配列が作られ、そのlengthで9が入っている要素の個数を判定し、while文を制御したいと考えています。

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

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

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

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

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

thinca

2016/09/26 04:58

期待する結果を教えてください。
guest

回答3

0

ベストアンサー

全体の 9 の数を数えたいのであれば、_.flatten で配列を1次元にしてしまうのが良いと思います。

http://underscorejs.org/#flatten

javascript

1bombNumber = _.filter(_.flatten(ary), function(number) { 2 return number === 9; 3 });

投稿2016/09/26 05:23

thinca

総合スコア1864

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

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

退会済みユーザー

退会済みユーザー

2016/09/28 04:32

ありがとうございます。解決しました。
guest

0

自分ならこうします.

javascript

1result = _.map(ary, data => _.filter(data, e => e == 9)); 2 3/*=> 4[[9], 5 [], 6 [9, 9, 9]] 7*/

flattenする必要があるのなら

javascript

1result = _.flatten(_.map(ary, data => _.filter(data, e => e == 9))) 2//=> [9, 9, 9, 9]

投稿2016/09/26 05:22

編集2016/09/26 05:23
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

underscore.js を使ったことが無いのですが、二次元配列であると確定しているのであれば下記のようにすればできませんか?

JavaScript

1bombNumber = _.filter( ary, function( aryary ) { 2 var r = _.filter( aryary, function( number ) { 3 return number === 9; 4 } ); 5 return r.length > 0; 6} );

投稿2016/09/26 05:02

kei344

総合スコア69364

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

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

退会済みユーザー

退会済みユーザー

2016/09/26 05:24

これだと [[9, 9, 9, 9] [9, 9, 9, 9]] になっておそらく想定する結果とは異なる気がします(質問者の期待する回答が示されていないのであくまで予想ですが.)
kei344

2016/09/26 05:38 編集

多分大丈夫だと思います。 https://jsfiddle.net/4hmv3sny/ ↑これがでます。 [[0, 0, 0, 9], [0, 9, 9, 9]] (「9が1つでも入っている配列を数える」だったら、という結果ですが・・・)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問