我有以下函数,它采用数据集,字段名称和搜索字符串,然后使用ES2015的箭头函数来查找结果。
示例呼叫是:
SET ARITHABORT ON;
SET ARITHIGNORE OFF;
我需要从函数中的参数构建它,但我无法获取字段名称。
功能:
var whatever = myDataSet.find(entry => entry.name === 'John');
我打电话给:
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
的对象属性但是我可以& #39;想到另一种方法来做到这一点。
是否可以将字符串传递给这样的对象属性,还是应该以不同的方式进行?
答案 0 :(得分:2)
findSingle: function(dataSet, fieldName, searchString){
return dataSet.find(entry => entry[fieldName] === searchString);
}
为了能够使用变量来获取对象属性,必须使用括号表示法(object [key])。点符号(object.key)按字面解释,并查找名为“key”的键。
在你的情况下,entry.fieldName等于entry ['fieldName']。要使用名为fieldName的变量,必须执行entry [fieldName]。