2016-07-05 7 views
0

データセット、フィールド名、および検索文字列を受け取り、ES2015の矢印関数を使用して結果を検索する次の関数があります。オブジェクトのキー名の引数を関数に渡す

例コールは次のとおりです。

var whatever = myDataSet.find(entry => entry.name === 'John'); 

私は関数内の引数からこれを構築する必要がありますが、私は、フィールド名を取得することはできません

機能:。

I
findSingle: function(dataSet, fieldName, searchString){ 
    return dataSet.find(entry => entry.fieldName === searchString); 
} 

電話します:

my.nameSpace.findSingle(dataSetName, 'name', 'John'); 

そして、私はそれがその後、呼び出すことを期待:

dataSetName.find(entry => entry.name=== 'john'); 

をしかし、それは失敗します。 (ハードコードentry.nameが期待どおりに機能している場合)私はentry.nameのオブジェクトプロパティである文字列を渡しているためだと確信していますが、これを行う別の方法は考えられません。

文字列をこのようなオブジェクトプロパティに渡すことは可能ですか、それとも別の方法で行うべきですか?

+2

'entry [fieldName]' – Pointy

答えて

2
findSingle: function(dataSet, fieldName, searchString){ 
    return dataSet.find(entry => entry[fieldName] === searchString); 
} 

オブジェクトプロパティをフェッチするために変数を使用できるようにするには、ブラケット表記(object [key])を使用する必要があります。ドット表記法(object.key)は文字通りに解釈され、 "key"という名前のキーを探します。

あなたの場合、entry.fieldNameはエントリ['fieldName']と同じです。 fieldNameという変数を使用するには、[fieldName]という項目を実行する必要があります。

+0

くそ、これ以外はすべて試しました - ありがとう!私ができる時に受け入れる –

関連する問題