Javascript 使用变量重命名数组
自学如何编写代码的一个问题是,您忽略了一些可能相当简单的事情: 我已经编写了一个函数,它接受文本文件(例如“someData1.txt”、“someData2.txt”等),将其内容转换为数组(“myArray”),并将其标题提取为变量(“fileName”) 我正处于解析文件名和数组的阶段,但我想用变量重命名每个数组,以便第一个数组成为“someData1”,依此类推。我已经有了一堆代码,可以对每个不同的数组执行不同的操作,因此如果我可以按照我希望的方式命名它们,这将非常有用 我想我可以用valueOf来做这件事Javascript 使用变量重命名数组,javascript,Javascript,自学如何编写代码的一个问题是,您忽略了一些可能相当简单的事情: 我已经编写了一个函数,它接受文本文件(例如“someData1.txt”、“someData2.txt”等),将其内容转换为数组(“myArray”),并将其标题提取为变量(“fileName”) 我正处于解析文件名和数组的阶段,但我想用变量重命名每个数组,以便第一个数组成为“someData1”,依此类推。我已经有了一堆代码,可以对每个不同的数组执行不同的操作,因此如果我可以按照我希望的方式命名它们,这将非常有用 我想我可以用va
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
对象根本不是一个好的做法,但这是唯一一个在范围中定义变量的解决方案,而不是作为对象的属性。谢谢!我确实想到了这一点,但我认为可能有更直接的方法。文件列表不太长,因此可以使用。@jasonPerskeglobal
指的是Node.js中的全局范围,与web浏览器中的window
非常相似。注:如果我需要设置全局变量,我会将我的代码包装在(函数(全局){…}(this))
中,这样我就不必关心如何在给定环境中引用全局范围。感谢pawel的精确性。
myObj['someData1']