使用变量重命名数组

时间:2015-01-21 22:21:49

标签: javascript

教自己如何编码的一个问题是你错过了一些可能相当简单的事情:

我编写了一个函数,它接受文本文件(例如“someData1.txt”,“someData2.txt”等)将其内容转换为数组(“myArray”),并将其标题提取为变量(“fileName” “)。

我正处于解析文件名和数组的阶段,但我想用变量重命名每个数组,以便第一个数组变为“someData1”,依此类推。我已经有了一堆代码,它们会对每个不同的数组做各种各样的事情,所以如果我可以按照我希望的方式命名它们会很有用。

我认为我可以使用valueOf来完成它,就像在

中一样
fileName.valueOf() = myArray;

但这不起作用。那我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

可能最简单的方法是使用一个对象,然后使用数组表示法为其分配键。让我告诉你:

var myObj = {};

myObj.someProperty = 1;

相同
myObj['someProperty'] = 1; // note the quotes

因此,可以使用变量名作为键。在您的示例中:

var fileName = 'someData1';
var myObj = {};

myObj[fileName] = myArray; // myArray being file contents from your example

现在,当您想要访问内容时,您只需执行以下操作:

myObj.someData1

或:

myObj['someData1']

只需确保您没有重复的文件名,就可以了。

答案 1 :(得分:1)

您要做的是动态定义变量名称。

虽然在Javascript中是不可能的,但你可能会很棘手。 您有两个选择:

  1. 使用全局范围对象存储变量(不是一个好习惯):
  2. global[variableName] = array;
    

    然后您将能够在范围内访问它:

    global['toto'] = 42;
    console.log(toto);
    
    => 42
    

    这不是一个好习惯,但却是动态定义范围内变量的唯一方法。

    1. 使用对象存储它:
    2. var myArrays = [];
      myArrays[variableName] = array;
      

      在每种情况下,您实际上都定义了一个对象的属性。

      你必须记住:

      myArrays['toto'] = 42;
      

      与:

      相同
      myArrays.toto = 42;
      

      所以要访问你的数组,只需:

      myArrays.toto