- 締切済み
linq.jsでの連想配列の検索方法について
・前提・実現したいこと javascriptでlinq.jsを使い、連想配列に格納したデータを検索したいと思っています。 どなたか連想配列を使用した場合の無名変数の書き方をご教授いただけますでしょうか? ・発生している問題・エラーメッセージ 特にエラーメッセージは出ていませんが、検索結果0件になります。 ・該当のソースコード // クラス定義 // function cQuestion(qIndex, qContent,qImportance){ this.qIndex = qIndex; this.qContent = qContent; this.qImportance = qImportance; } //問題リスト(連想配列) var questions = new Object(); //リストに追加 questions['A01'] = new cQuestion( 'A01', 'テスト' , 9] ); //検索結果 記述A var listItems = Enumerable.From(questions) .Where(function(x) {return x.qIndex == 'A01'}) .Select(function(x) { return x.qIndex }) .ToArray(); //検索結果 記述B var listItems = Enumerable.From(questions) .Where(function(key) { return this[key].qIndex == 'A01'},questions) .Select(function(key) { return this[key].qIndex },questions) .ToArray(); ・試したこと データはquestionsに格納できています。 「記述A」と「記述B」とで記述してみました。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- pringlez
- ベストアンサー率36% (598/1630)
linq.jsを知りませんがおそらく「Enumerable.From()」には配列を渡さなければいけないのにそうしていないということだと思います。 つまりquestionsを作成している部分をこう書けば動くと思います。 var questions = [new cQuestion('A01', 'テスト', 9)]; 他の言語から流れてきた人や昔のドキュメントでは、オブジェクトを「連想配列」と呼んでいるケースがありますが、オブジェクトはオブジェクトです。「連想配列」ではありません。例え「連想配列」という言葉を使っても、配列とは全く違うので、区別するようにしてください。
補足
ご回答ありがとうございます。 頂いた回答の通り、配列の場合は動作します。 ただ、今回のケースはデータソースに連想配列を使用したいと考えています。