2016-10-06 8 views
0

フィルタリング可能なギャラリーで作業していますが、タイトル全体が入力値と一致している場合にのみ正しい画像が表示されます。しかし、私は分離された文字にフィルタをかけたい。ここで私は、関数を書いた: `ギャラリーのJavascriptを作成する

filterList (filterText) { 
    var updatedList = this.props.array; 
    return updatedList.filter(function(item){ 
     var split = item.name.split(""); 
     console.log(split, filterText); 
     return split === filterText; 
    }); 
    } 

今では私にこのような区切りitem.nameを示しています。["p","h","o","t","o","","1"] 代わりの写真1私は区切り文字にフィルタリングします。ここで

はcodePenへのリンクです:あなたは「filterText」私たちの例を与え、そのがそれであることをsuposed方法を返す場合、多分

filterList (filterText) { 
    var updatedList = this.props.array; 
    return updatedList.filter(function(item){ 
     var split = item.name.split(" "); 
     console.log(split, filterText); 
     return split === filterText; 
    }); 
    } 

LINK `

+0

これはあまり意味がありません。文字列全体をフィルタリングするか個々の文字をフィルタリングするかにかかわらず、一致はまったく同じです。配列内のすべての文字が一致しなければなりません。部分的なマッチをしたいのであれば、おそらく 'substring'や' slice'を使って、より少ない数の文字を取得する必要があります。 –

答えて

1

1つの方法は、同じ長さのタイトル全体の部分文字列と入力値を比較することです。ここに例があります:

filterList (filterText) { 
    var len = filterText.length, 
     updatedList = this.props.array; 

    return updatedList.filter(function(item){ 
     var split = item.name.slice(0, len); 
     console.log(split, filterText); 
     return split === filterText; 
    }); 
} 
+0

私はスライス関数の最後の変数として入力値の長さを与えていません。しかし、どのように機能するのですか? – Sreinieren

+1

'String.slice(0、x)'は最初のx文字を取得し、それを新しい文字列として返します。 '.slice()'は '.substring()'と似ていますが、いくつかの違いもあります。 [詳細はこちら](http://stackoverflow.com/questions/2243824/what-is-the-difference-between-string-slice-and-string-substring) –

0

私の最初の推測では、このですより簡単になります。

+0

http://codepen.io/smgjrein/pen/ALbVyo?editors=0010 – Sreinieren

+0

@Beginnerprogrammer第三者のサイトではなく、質問自体に関連するすべてのコードを[mcve]として含めてください。 See [ask]。 –

関連する問題