我声明了六个变量:
let L1, L2, L3, R1, R2, R3
然后我要为这六个变量分配相同的值:
L1 = "something";
L2 = "something";
L3 = "something";
R1 = "something";
R2 = "something";
R3 = "something";
一定有更短的方法来做到这一点吗?我想循环执行此操作,因为在此示例中,我们只有六个变量,但实际上我有很多变量。
答案 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 }) );
有帮助吗?