使用存储在变量中的字符串作为另一个变量的名称

时间:2017-08-17 19:43:59

标签: javascript

我希望将作为参数传递的字符串与另一个字连接起来,然后将其用作数组的变量名。这是允许的吗?

function getFromSomewhere(arg1) {

string newName = arg1 + "sampleWord";

var (use NewName here) = [];

}

6 个答案:

答案 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}]
 */