gpt4 book ai didi

javascript - 使用函数参数查找和对象键值对?

转载 作者:行者123 更新时间:2023-11-30 12:20:40 25 4
gpt4 key购买 nike

我试图找到一个键值对值,但我想将键作为参数传递,但它似乎不起作用。

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"
}...

我希望将变量传递两次,一次用于排序,另一次用于查找值,但它实际上是在寻找显然不存在的键值对“变量”。

我如何让它被视为论点?

最佳答案

这有两个方面:

  1. 使用名称为 variable 的属性创建字段对象而不是文字名称 variable , 和

  2. 根据变量的值(而不是文字名称 variable )访问结果字段

首先处理 #2 因为它更容易:在 JavaScript 中,您可以使用点符号和属性名称文字 (obj.foo) 或使用方括号符号和属性名称字符串来访问对象的属性*(obj["foo"])。在后一种情况下,字符串可以是任何表达式的结果,包括变量查找。所以如果variable包含 "foo" , 然后 obj[variable]将获取或设置 foo属性(property) obj .

回到 #1:现在,您必须创建要作为 fields 传递的对象首先,然后通过括号表示法而不是在对象初始值设定项中分配属性值:

    var fields = {};
fields[variable] = 1;

如果variable包含 "foo" , 然后 fields[variable] = 1设置 foo属性(property) fields1 .

所以把它们放在一起:

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 中,括号符号可以与称为 Symbols 的东西一起使用以及字符串。这与你的问题无关,但我在上面说了“字符串”,很快这就不是真的了,所以......

关于javascript - 使用函数参数查找和对象键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com