Javascript 使用函数参数查找对象和键值对?
我试图找到一个键值对值,但我想将该键作为参数传入,但它似乎不起作用Javascript 使用函数参数查找对象和键值对?,javascript,meteor,Javascript,Meteor,我试图找到一个键值对值,但我想将该键作为参数传入,但它似乎不起作用 function drawPieChart(){ var findData = function(variable){ return dailyLog.find({createdBy: Meteor.user().username}, {fields: {variable: 1}}).fetch()[0].variable; }; var data = [ { value: findDat
function drawPieChart(){
var findData = function(variable){
return dailyLog.find({createdBy: Meteor.user().username}, {fields: {variable: 1}}).fetch()[0].variable;
};
var data = [
{
value: findData(adherence),
color: "#CBDDE7"
}...
我希望变量被传入两次,一次用于排序,另一次用于查找值,但实际上它正在查找键值对“variable”,它显然不存在
我如何使它被视为论点?这有两个方面:
变量
的值而不是文字名变量
的属性创建fields对象,以及obj.foo
),或者使用括号符号和属性名称字符串*(obj[“foo”]
)访问对象上的属性。在后一种情况下,字符串可以是任何表达式的结果,包括变量查找。因此,如果variable
包含“foo”
,则obj[variable]
将获取或设置obj
上的foo
属性
回到#1:现在,您必须首先创建要作为字段传递的对象,然后通过括号表示法而不是在对象初始值设定项中指定属性值:
var fields = {};
fields[variable] = 1;
如果variable
包含“foo”
,则字段[变量]=1
将字段上的foo
属性设置为1
因此,把所有这些放在一起:
var findData = function(variable){
var fields = {};
fields[variable] = 1;
return dailyLog.find({createdBy: Meteor.user().username}, {fields: fields}).fetch()[0][variable];
// Note ------------------------------------------------------------------------------^--------^
};
在下一个版本的JavaScript ECMAScript6(又称ES6)中,您将能够使用对象初始值设定项中的“计算属性名”执行#1(并且仍然使用括号表示法检索它)。也许毫不奇怪,计算属性名使用了…括号
// ES6 only!!
var findData = function(variable){
return dailyLog.find({createdBy: Meteor.user().username}, {fields: {[variable]: 1}}).fetch()[0].[variable];
// Note ------------------------------------------------------------^--------^ --- and ---------^--------^
};
*旁注:在ES6中,方括号表示法可以与称为符号的东西以及字符串一起使用。这与你的问题无关,但我在上面说了“字符串”,很快这就不是真的了,所以…+1。如果您事先不知道要在对象中调用的属性,比如如果它是方法中的参数,则需要使用括号[variable]
符号,而不是点.variable
符号。@t.J.Crowder dude,非常感谢!完美地解决了它,我很高兴,工作完美!!非常感谢。