2016-07-05 45 views
0

我有以下函数需要数据集,字段名称和搜索字符串,然后使用ES2015的箭头函数来查找结果。将对象键名称参数传递到函数

调用示例是:

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

我需要从参数的函数内部建立这一点,但我不能让字段名

功能:

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

其中我'd call with:

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

该死的,试过一切,但是这个 - 谢谢!我会尽可能接受 –

相关问题