2017-02-28 22 views
0

配列を比較文字列と数値の結果値でフィルタリングする必要があります。しかし、私は両方の値を入力しながら、フィルタ配列の値を取得します。それ以外の場合は値を取得できません。つまり、文字列の値のみを入力すると、フィルタ配列の値を取得できません。複数の値を持つ配列からのフィルタjs

var fullArray = [{stringValue:"apple", numericValue:"40"}, {stringValue:"banana", numericValue:"20"}, {stringValue:"berry", numericValue:"30"}, {stringValue:"mango", numericValue:"10"}] 

    _.filter(fullArray, function(el){ 
     if(el.stringValue.toLowerCase().indexOf(stringResultValue.toLowerCase())>=0 && el.numericValue==numericResultValue){ 
      resultFilter.push(el); 
     } 
    }); 
+0

'resultFilter'、' stringResultValue'、 'numericResultValue'何であるあなたのような何かを持っている必要がありますか?入力データと期待される結果の例を挙げてください –

+0

[Array.prototype.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)を参照してください。 Lodashの 'filter'も同様に動作します。 – barbsan

+0

@AndrewParamoshkin、resultFilterは最終結果配列を取得します。 stringResultValueとnumericResultValueはどちらもすでにclick関数から値を取得しています。 –

答えて

1

filterは、彼らはいけない場合は、新しい配列、および何かfalseyであるべき要素についてtruthy何かを返す関数を期待しています。

var fullArray = [{stringValue:"apple", numericValue:"40"}, {stringValue:"banana", numericValue:"20"}, {stringValue:"berry", numericValue:"30"}, {stringValue:"mango", numericValue:"10"}] 

resultFilter = _.filter(fullArray, function(el){ 
    return el.stringValue.toLowerCase().indexOf(stringResultValue.toLowerCase()) >= 0 && 
      el.numericValue === numericResultValue; 
}); 

ES6の構文を使用して短いバージョン、::

resultFilter = fullArray.filter(el => 
    el.stringValue.toLowerCase().includes(stringResultValue.toLowerCase()) && 
    el.numericValue === numericResultValue; 
); 
関連する問題