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

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

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

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

Q&A

解決済

1回答

876閲覧

[Javascript]複数条件による2次元配列の絞り込み処理の高速化

Tallind

総合スコア7

JavaScript

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

0グッド

1クリップ

投稿2022/05/24 13:56

実現したいこと

2次元配列を条件で絞り込み出力する下記プログラムを作成しました。
実運用での配列は行・列ともにより膨大になるため、より高速化できる記述方法がないか模索しています。

2次元配列を行列とみなし、各列ごとに条件を指定します。
もし条件の指定がない(null)ときはその列の絞り込みは行わないこととします。

nullという条件ばない場合の処理は簡単だと思うのですが、nullがあることにより複雑になってしまっています。

よろしくお願い致します。

該当のソースコード

Javascript

1let item_list = [ 2 [0,0,0], 3 [0,1,0], 4 [1,0,0], 5 [2,0,0], 6 [2,0,1], 7 [0,1,2] 8 ]; 9 10function search_list(items,column,param){ 11 let list = []; 12 for(let item in items){ 13 if(param!=null){ 14 if(items[item][column]==param){ 15 list.push(items[item]); 16 }; 17 }else{ 18 list = items 19 }; 20 }; 21 return list; 22}; 23 24item_list0 = search_list(item_list,0,0); //配列1列目を検索 25item_list1 = search_list(item_list0,1,null); //配列2列目を検索 26item_list2 = search_list(item_list1,2,null); //配列3列目を検索 27 28console.log(item_list2); //出力[ [ 0, 0, 0 ], [ 0, 1, 0 ], [ 0, 1, 2 ] ] 29

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

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

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

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

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

guest

回答1

0

ベストアンサー

構成を大きく変えないなら、とりあえず

js

1function search_list(items, column, param) { 2 if (param == null) 3 return items; 4 return items.filter(row => row[column] == param); 5}

のように、ループを回避してできるだけ言語ランタイムに仕事を任せるのがいいんじゃないでしょうか。


js

1item_list2 = search_list(item_list, [0, null, null]);

のように各カラムの条件を一度に渡して一回の filter() で処理を終わらせることもできるはずです。

投稿2022/05/24 14:41

int32_t

総合スコア20670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問