###実現したいこと
以下lis
から指定条件をクリアする階層のbox
の値を取得したいです。
jQuery
1var lis = [ 2 { width:20, height:20, box:'box20' }, 3 { width:50, height:50, box:'box50' }, 4];
###発生している問題
たとえば「width
が30
以上」という条件ならbox50
がほしいのですが、box50
でなく{ width:50, height:50, box:'box50' }
がまるごと返ってきてしまいます。
###該当のソースコード
下記のようにreturn elem.box;
としているのにまるごとその階層のオブジェクトが返ってきてしまいます。しかもきちんとコンソールでelem.boxは「box50」です
というのは出ているのですが、なぜなのでしょうか。
jQuery
1var result = $.grep(lis,function(elem, i) { 2 if(elem.width > 30){ 3 console.log('elem.boxは「' + elem.box + '」です'); 4 return elem.box; 5 } 6}); 7console.log(result);
###試したこと
上記しましたがコンソールで値を確認してもできないので、いったんgrep
はやめて他のを試しました。
しかし以下filter
でできす。
jQuery
1var result = lis.filter(function(elem, i){ 2 if(elem.width > 30){ 3 return elem.box; 4 } 5}); 6console.log(result);
さらに以下forEach
でもできず。
jQuery
1var result = lis.forEach( function(elem, i){ 2 if(elem.width > 30){ 3 return elem.box; 4 } 5}); 6console.log(result);
打つ手なしといった状況です。
もちろん、result
からresult[0]['box']
とすれば取り出せますが、そうでなくresult
の時点でbox50
を取り出したいのです。
わかる方いらっしゃったら宜しくお願い致します!
###追記
kei344様にご指摘頂きました点を追記させて頂きます。
できれば「30以上で、一番小さいもの」がいいと思っています。例えば以下なら「box31」を取り出すことができましたら!
jQuery
1var lis = [ 2 { width:20, height:20, box:'box20' }, 3 { width:50, height:50, box:'box50' }, 4 { width:31, height:50, box:'box31' }, 5];
回答1件
あなたの回答
tips
プレビュー