Javascript 使用变量重命名数组

Javascript 使用变量重命名数组,javascript,Javascript,自学如何编写代码的一个问题是,您忽略了一些可能相当简单的事情: 我已经编写了一个函数,它接受文本文件(例如“someData1.txt”、“someData2.txt”等),将其内容转换为数组(“myArray”),并将其标题提取为变量(“fileName”) 我正处于解析文件名和数组的阶段,但我想用变量重命名每个数组,以便第一个数组成为“someData1”,依此类推。我已经有了一堆代码,可以对每个不同的数组执行不同的操作,因此如果我可以按照我希望的方式命名它们,这将非常有用 我想我可以用va

自学如何编写代码的一个问题是,您忽略了一些可能相当简单的事情:

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

我正处于解析文件名和数组的阶段,但我想用变量重命名每个数组,以便第一个数组成为“someData1”,依此类推。我已经有了一堆代码,可以对每个不同的数组执行不同的操作,因此如果我可以按照我希望的方式命名它们,这将非常有用

我想我可以用valueOf来做这件事

fileName.valueOf() = myArray;
但这是行不通的。那我该怎么做呢


谢谢

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

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
或:


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

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

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

  • 使用全局范围对象存储变量(不是一种好的做法):
  • global[variableName]=数组;
    
    然后您将能够在范围内访问它:

    global['toto']=42;
    控制台日志(toto);
    => 42
    
    这不是一个好的实践,但却是在范围中动态定义变量的唯一方法

  • 使用对象来存储它:
  • var myArrays=[];
    myArrays[variableName]=数组;
    
    在每种情况下,您实际上都定义了对象的属性

    你必须记住:

    myArrays['toto']=42;
    
    这与:

    myArrays.toto=42;
    
    因此,要访问阵列,只需执行以下操作:

    myArrays.toto
    
    嗯?我不知道最终的结果是什么。。。这不是你使用valueOfI的方式我不熟悉任何叫做
    global
    ()的全局对象。如果您为一个没有功能范围
    var
    的变量赋值,那么它将被提升到全局范围。是的,我知道使用
    global
    对象根本不是一个好的做法,但这是唯一一个在范围中定义变量的解决方案,而不是作为对象的属性。谢谢!我确实想到了这一点,但我认为可能有更直接的方法。文件列表不太长,因此可以使用。@jasonPerske
    global
    指的是Node.js中的全局范围,与web浏览器中的
    window
    非常相似。注:如果我需要设置全局变量,我会将我的代码包装在
    (函数(全局){…}(this))
    中,这样我就不必关心如何在给定环境中引用全局范围。感谢pawel的精确性。
    myObj['someData1']