我希望将作为参数传递的字符串与另一个字连接起来,然后将其用作数组的变量名。这是允许的吗?
function getFromSomewhere(arg1) {
string newName = arg1 + "sampleWord";
var (use NewName here) = [];
}
答案 0 :(得分:1)
不幸的是,不允许。我们看到的变量名称(例如 newName )在编译时无需进行优化。在运行时,您的计算机将无法使用它的名称 newName ,这时您正在尝试为其指定名称。
答案 1 :(得分:1)
您可以使用object将所需水果作为数组的键,就像示例中一样。
该对象易于访问和维护。
var array = ["apple", "banana", "grapes"],
prices = {};
array.forEach(function (k) {
prices[k] = [];
});
prices.apple.push(1, 10, 3);
console.log(prices.apple[2]);
console.log(prices);

答案 2 :(得分:1)
您可以使用newName
作为属性的名称
function getFromSomewhere(arg1) {
var myVariableNamedAtRuntime = [];
string newName = arg1 + "sampleWord";
myVariableNamedAtRuntime[newName] = [];
}
然后以...格式访问数组。
myVariableNamedAtRuntime[newName]
答案 3 :(得分:1)
在定义函数后,无法向函数定义中添加新变量。但是,您始终可以向定义的函数对象或其原型添加新属性,您可以按如下方式访问它们。
function getFromSomewhere(arg1) {
var newName = arg1 + "_sampleWord_";
this.getFromSomewhere.varName = newName + "test";
this.getFromSomewhere.prototype.varName = newName + "best";
console.log(this.getFromSomewhere.varName);
console.log(this.getFromSomewhere.prototype.varName);
}
getFromSomewhere("test");

答案 4 :(得分:1)
您可以将变量添加到窗口对象:
Math
答案 5 :(得分:0)
是的,这是可能的。但不,你不想这样做。动态变量名称始终是一个符号,您应该使用对象。在这种情况下,我认为你可以简单地将你的字符串数组映射到一个对象数组:
function namesToObj(arr){
return arr.map( name => ({
name,
price:10
}));
}
namesToObj(["banana","tomato"])
/*results in
[{name:"banana",price:10},{name:"tomato",price:10}]
*/