gpt4 book ai didi

javascript - 动态赋值给 undefined variable

转载 作者:行者123 更新时间:2023-11-30 15:54:14 24 4
gpt4 key购买 nike

我确信有一个简单的方法可以做到这一点,但我现在很困惑。

我在脚本顶部定义了很多变量(这里是两个示例):

var firstVar,secondVar;

然后我有一个包含这些变量的对象:

var myObj = { a: {name:firstVar, number:1}, b: {name:secondVar, number:2}

我想为这些变量赋值:

keys = Object.keys(myObj);

function getAll(e){
var myArray = [];
for (var prop in myObj){
myArray.push(myObj.prop[e]);
}
return myArray;
}

我想要的行为是:

var nameVars = getAll(name);
// [firstVar,secondVar]

但它返回:

// [undefined,undefined] 

我还能如何在定义变量之前获取变量?

最佳答案

Then I have an object which contains those variables:

不,它没有。它包含 副本,这些变量在您创建对象时包含(未定义,因为您从未分配过对他们有值(value))。创建后,您将值复制到的对象属性与变量之间没有持续的链接。

由于对象没有到变量的持久链接,getAll 无法返回您所说的所需信息。


您在评论中说过您正在构建 d3 图并且具有与某些变量相同的结构,并且希望避免重复自己。在我看来你想要一个构建器函数:

function buildObject(firstVar, secondVar) {
return { a: {name:firstVar, number:1}, b: {name:secondVar, number:2} };
}

...然后您将像这样使用它:

var obj1 = buildObject("value1", "value2");
// do a graph
var obj2 = buildObject("valueA", "valueB");
// do a graph

...或者甚至可能只是获取变量并生成图表的东西:

function makeGraph(firstVar, secondVar) {
buildTheGraph({ a: {name:firstVar, number:1}, b: {name:secondVar, number:2} });
}

我不认为它是,但如果它是你想要的名称,只需将它们放在引号中(还有 myArray.push(myObj.prop[e]); 应该是 myArray.push(myObj[prop][e]);getAll(name) 应该是 getAll("name")),但同样根本没有指向变量的链接:

// Since they're not used, we don't even need these: var firstVar, secondVar;

var myObj = { a: { name: "firstVar", number: 1 }, b: { name: "secondVar", number: 2 } };

function getAll(e) {
var myArray = [];
for (var prop in myObj) {
myArray.push(myObj[prop][e]);
}
return myArray;
}

var nameVars = getAll("name");
console.log(nameVars);

...但请注意,拥有名称并不能帮助您稍后获取变量值(除非您使用 eval,您应该设法避免这种情况)。

关于javascript - 动态赋值给 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812891/

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