如何分配一系列名称相似的变量

时间:2019-06-29 00:16:05

标签: javascript

我声明了六个变量:

let L1, L2, L3, R1, R2, R3

然后我要为这六个变量分配相同的值:

L1 = "something";
L2 = "something";
L3 = "something";
R1 = "something";
R2 = "something";
R3 = "something";

一定有更短的方法来做到这一点吗?我想循环执行此操作,因为在此示例中,我们只有六个变量,但实际上我有很多变量。

7 个答案:

答案 0 :(得分:1)

为什么不使用对象呢?

const bubbles = {
  bubbleL1,
  bubbleL2,
  bubbleL3,
  bubbleR1,
  bubbleR2,
  bubbleR3
};

如果要在其上使用数组方法,则可以使用Object.values从对象中提取值的数组。

对于新问题,您可以使用值填充数组,然后进行解构:

const [L1, L2, L3, R1, R2, R3] = new Array(6).fill('something');
console.log(L1);
console.log(R3);

答案 1 :(得分:1)

如果您想为每个变量赋予自己的名称,但又希望将它们分组在一起,以便可以使用毯子式语句设置所有值,则有两个简单的选择:

选项1: 使用数组。数组不允许您为变量命名,但是会根据变量在数组中的位置(索引)为它们自动分配“名称”。例如,如果您使用以下值组成数组:“ Cookie”,“ Money”和“ Nothing”。那么它们将被分配编号以引用它们,“ Cookie”将被命名为“ 0”,“ Money”将被命名为“ 1”,“ Nothing”。将被命名为“ 2”,以此类推...下面是一个数组的示例:

var nameOfArray = ["value1","value2","value3"];

并访问数组的值,只需使用该值的索引:

nameOfArray[0]

(^^^这将返回“ value1” ^^^)

因此,如果您考虑一下,这会使数组对循环友好。因此,此示例看起来非常简单。只需使用以下命令即可将数组中的每个变量分配给相同的值:

for(let i = 0;i < nameOfArray.length;i++){
    nameOfArray[i] = "Whatever value I want.";
}

选项2: 使用一个对象。对象基本上是一组命名变量。变量的名称称为“键”,变量的值称为“值”。通常将其称为“键/值对”,例如:

var nameOfObject = {
    variable1: "value1",
    variable2: "value2",
};

其中“ variable2”是键,而“ value2”是值。

然后,您可以使用简单的点或括号符号访问对象内的每个变量。 点表示法:nameOfObject.variableName 方括号表示法:nameOfObject["variableName"]

将对象内的所有变量设置为相同的值可能很棘手。为此,我通常使用for循环,该循环遍历对象中的所有键并设置其值。为此,您首先需要收集对象中所有键的所有名称。我只使用:Object.keys(nameOfObject),然后遍历该数组并为每个变量分配一个值:

const objectKeyNames = Object.keys(nameOfObject);

for(let i = 0;i < objectKeyNames.length;i++){
    nameOfObject[objectKeyNames[i]] = "Whatever I want to set it to.";
}

就这么简单!该对象内的所有变量都将设置为“无论我要设置为什么”。

答案 2 :(得分:1)

我认为您能够完成此操作的主要方式是使用对象(正如其他人已经指出的那样)。您仍然仍然需要首先使用长格式语法实例化所有变量。但随后您将可以使用“ for in”循环实际分配所有必要的值:

let something = {
  L1: null,
  L2: null,
  L3: null,
};

for (let prop in something){
  something[prop] = 1;
};

console.log(something);

希望这会有所帮助!

答案 3 :(得分:0)

听起来您正在寻找地图而不是列表。

如果您声明一个对象

var bubbles = {}

然后您可以按名称访问项目

bubbles['bubbles1'] = 'something';

如果需要,您也可以稍后在列表中循环浏览这些项目。

答案 4 :(得分:0)

您可以使用左手分配进行分配,如下所示: let L1 = L2 = L3 = R1 = R2 = R3 = "something"; 但是,这将导致范围问题。 最好先声明然后分配

let L1, L2, L3, R1, R2, R3;
L1 = L2 = L3 = R1 = R2 = R3 = "something";`

答案 5 :(得分:0)

即使我认为您不应该这样做,我也将直接回答您的问题,您应该以一种更加“ javascript”的方式来考虑。

说:

const value = "something";
const numberOfVars = 100;
for( let i=0; i< numberOfVars; i++)
    eval( "L"+ i + " = value" );

这将创建内部值为“ something”的变量L0至L99。您可以为任何名称执行此操作,无论是R,L还是有效的JavaScript变量名称的任何字符串。

答案 6 :(得分:0)

您确定您有一百个实际上不是对象部分的变量吗?

类似于let R1,R2,R3,L1,L2,L3的音量可以为3个音轨的音量{left,right}。

所以你可以写

let tracks = [{ right : 0, left : 0}, { right : 0, left : 0}, { right : 0, left : 0}]

L1将变为tracks[0].left,R3将变为tracks[2].right

有100首曲目?

let tracksCount = 100;
let tracks = new Array(tracksCount).fill().map( t => ({ right:0, left: 0 }) );

有帮助吗?