実現したいこと
こんにちは。
サイト上にテキストボックスで2ケタの数字を入力できるようにし、
それをあらかじめリスト化してあるscriptから探して
入力した値以下のものに絞り込み全て取り出したいです。
前回質問させていただいた内容の続きになりますので
javascriptやhtmlの元データは前回同様こちらを参考にしています。
また、lodash.jsが必要になります。
(前回underscore.jsと書いてしまいました、すみません)
javascript
1var Lists= [ 2 { name: 'あいうえお', hobby: [['趣味1', '30', 'あああ'], ['趣味2', '20', 'いいい'], ['趣味3', '40', 'ううう']]}, 3 { name: 'かきくけこ', hobby: [['趣味1', '50', 'かかか'], ['趣味2', '30', 'ききき'], ['趣味3', '40', 'くくく'], ['趣味4', '40', 'けけけ']]} 4 { name: 'さしすせそ', hobby: [['趣味1', '20', 'さささ'], ['趣味2', '40', 'ししし']]} 5];
のような配列がある時に、
html
1<input type="number" class="hobby" name="hobby" value="180" min="1" max="180" step="1">日でマスターできる趣味
のようにしてあるサイト上のテキストボックスに例えば「25」と打ち込むと、
hobbyの欄の2番目に記述してある数字をそれぞれ比較して
25以下の趣味を持つ人に該当するあいうえおさんとさしすせそさんのみ取り出したいです。
同じくサイト上で名前をドロップダウン式で選択し絞り込むようにもしてあるのですが、それは
javascript
1function filterByName(value) { 2 return (value == "") ? _.constant(true) : function(item) { 3 var ranges = { 4 1: {name: "あいうえお"}, 5 2: {name: "かきくけこ"}, 6 3: {name: "さしすせそ"}, 7 }; 8 var range = ranges[value]; 9 return range.name== item.name; 10 } 11 }
で問題なく絞り込めるので、これを少し形を変えれば出来そうだと思ったのですが
私の実力では動かすことが出来ませんでした。
(上の関数は元サイトの絞り込み関数と少々違っていますが、前に別な場所で教えていただいた際にこのように記述を変えてもらったためそれを使っています)
試したこと
javascript
1function filterByHobby(values) { 2 return (values == "") ? _.constant(true) : function(item) { 3 var hob = [item.hobby[0][1]].concat(item.hobby[1][1],list.hobby[2][1],list.hobby[3][1]); 4 return _.some(hob, function(hobby){ 5 return hobby <= values ; 6 }); 7 }}
と書き換えてみましたが動きませんでした。
基本が分かっていない記述とは思いますが、なにとぞご容赦ください。
リスト内の趣味の欄の全ての2番目の数字を比較し、入力されたテキスト以下のものを取り出すには
どう書けばよいのか教えていただきたく思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/08 13:27