いつもありがとうございます。
jqueryでの配列の使い方を知りたいです。
以下のような連想配列を作っています。
実際は数千データで、項目も20項目以上あります。
var array = [
{'title':'商品名1', 'price':2400,'stock':10},
{'title':'商品名2', 'price':5210,'stock':7},
{'title':'商品名3', 'price':1499,'stock':2}
......
];
これを、項目(例えばtitle)で並べ替えとかは出来たのですが、
もっと複雑な使い方がしたいのですがどうしたらいいのかわかりません。
やりたいことは、例えば以下のような条件で取り出したいです。
・titleに、xxxxxというキーワードが入っているデータだけ取り出す
・priceがX以下のデータだけ取り出す
・複数の条件に合ったデータのみ取り出す。
SQLであれば上記の事は簡単に出来るのですが、
配列だとどうやってあつけばいいのかわかりません。。。
最初からデータベースに入っているデータを扱えば?
ってなるのですが、毎回数千データを取ってくると凄く時間がかかります。
なので、データベースから取ってきたデータを一旦配列に全部入れて、
後は配列内だけで処理した方が処理速度が速いので、できれば配列で扱いたいです。
アドバイスなどありましたら何卒よろしくおねがいしますm(_ _)m
No.3ベストアンサー
- 回答日時:
C#やVB.NETのような、マイクロソフトの言語には、統合言語クエリ=LINQ(Langage INtegrated Query)という、集合型データ処理専用の拡張モジュールが存在するため、ステートメントレベルで配列を一気にフィルタリングしたりできます。
LINQには、DBアクセス専用のLINQ for EFやLINQ for SQL、XML用のLinq XMLなどもありますが、もっとも汎用で使用されるのがLINQ for Onjectと呼ばれる、内部オブジェクト専用のLINQモジュールです。
で、そのJavascript版に、LINQ.jsというライブラリがあります。
こちらをご確認。
http://www.atmarkit.co.jp/fdotnet/dotnettips/105 …
ちょっと文法的な慣れが必要ですが、集合型データの処理を革新する強力な手段になるでしょう。
また、LINQ.jsには、jQueryのチェイン・ステートメントに対応するタイプもあり、jQueryの構文中でそのまま使用できます。
回答ありがとうございます!
LINQですか・・・聞いたことないです(汗)
でも参考サイトを見るとなんか出来そうな気がするのでチャレンジしてみます!
ありがとうございます!
No.4
- 回答日時:
> まだ並べ替えでしか試していないのですが、DBから取ってくると数秒かかるのですが配列の中身を並べ替えて再表示だと1秒もかからず一瞬で出来たので
それ、比較対処を間違えてませんか?
DB から並べ替え後のデータを取得する場合、当然ながら DB からのデータ送信というコストがかかります。
もしあなたが「配列の中身を並び替え」た時間の計測が並び替え前のデータを用意した時点から行っていたなら、それは DB からのデータ送信コストを計算に入れることを忘れています。
本気で DB での並べ替えと配列での並べ替えを比較したいのなら、配列側は DB から未並び替えのデータを取得するところから計測を始めなくてはいけません。
再び回答ありがとうございます。
比較対象が違うとかではなく、どちらが早いかだけです。
おっしゃる通り、「DB からのデータ送信というコスト」があるのでDBへのアクセスは1回だけにしたいのです。
現在、サイト開いた時の1回だけDBにアクセスしてデータを取って来ています。
その後の、並べ替えや条件表示の時にもう一度DBにアクセスするのではなく
取って来たデータで処理が出来れば早いと思い、どのように処理して良いか
分からないので質問させていただきました。
意図してる回答になっていなかったらすみません。
No.2
- 回答日時:
通常の配列処理なので,jQueryは全く関係しませんよね。
jQueryの対象分野は基本的にDOM要素で,通常セレクタによる選択を行うと思います。。
また,RDBMS側でフィルタリングできるのであれば,そちらの方が効率がよいのはANo.1の方の書かれている通りだと思います。
その上で,JavaScript側で処理する方法ですが,
・配列をループで回して,条件に合致していくものを別の配列に追加していく
・Array.filterを使ってフィルタリングする
の2種類の方法が思いつきます。
前者は力業ですが,ほとんどの言語で実装できる方法になります。
後者に関しては,コールバック関数を使ってフィルタ条件を指定する方法で,
慣れていれば「filter」という名前で処理がわかりやすいのですが,
コールバック関数に慣れていないとわかりにくく感じるかもしれません。
# jQueryなんかでコールバック関数は普通に使っていると思いますが。
refs) Array.filterに関して
・MDN (Mozilla Developer Network)
https://developer.mozilla.org/ja/docs/Web/JavaSc …
・MSDN (Microsoft Developer Network)
http://msdn.microsoft.com/ja-jp/library/ff679973 …
回答ありがとうございます!
すみません。jqueryとかjavascript自体使い始めて間もなく名前の意味とか何が出来るとか良くわからず質問してしまいました。
コールバックが何を意味してるかすらわからないので、filterは難しそうですね。
一応チャレンジしてみます。
参考URLまでありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Visual Basic(VBA) AdvancedFilterについての質問 2 2022/07/02 22:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのメモリ(配列)の上限は2G...
-
OutOfMemoryExceptionの回避策...
-
C言語
-
固定小数点の三角関数
-
配列の要素がすべてカラかどう...
-
テキストボックの文字を一行ず...
-
複数のtextboxの処理を一括で行...
-
構造体配列内の文字列検索のよ...
-
構造体配列の特定のメンバーをF...
-
jqueryで配列をMySQLのように扱...
-
VB.NETの配列の限界を教えてく...
-
VBA 変数名に変数を使用したい。
-
excel vbaの配列なんですが・・・
-
C#でbyte配列から画像を表示さ...
-
コンボボックスのインデックス...
-
countif/sumifのようなVBA関数
-
Dir関数で読み取り順を操作でき...
-
VB6で、一次元配列と二次元配列...
-
配列のペースト出力結果の書式...
-
エクセル VBA 変数を一括で宣言...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
Excel2010のinputboxで複数デー...
-
配列の中の最大値とそのインデ...
-
構造体配列の特定のメンバーをF...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
コンボボックスのインデックス...
-
エクセルでXY座標に並べられた...
-
エクセル(VBA)の空白配列の削除...
-
Redim とEraseの違いは?
-
定数配列の書き方
-
VB6のメモリ解放に関して
-
CheckBoxの配列化
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
大量の変数を定義するにはどう...
-
OutOfMemoryExceptionの回避策...
おすすめ情報