【问题标题】:Loop through the first level in array and assign it to a variable循环遍历数组中的第一级并将其分配给一个变量
【发布时间】:2026-02-15 05:50:02
【问题描述】:

我想要从第 1 天到第 10 天命名 10 个变量,并且对于每个变量,arrayOne[][] 只会增加每个 Date 函数方法之前的第一个值,因此对于第 1 天,它将是 arrayOne[0][ 0],对于第 2 天 arrayTwo[1][0],第 3 天将是 arrayThree[2][0] - 所以第二个值将始终保持不变。

此代码有效,但似乎效率极低,有没有办法将其放入循环中,仅增加数组的第一个“级别”并将其分配给相应的日期?

var day1 = arrayOne[0][0].getDate() + "." +  arrayOne[0][0].getMonth() + "." +  arrayOne[0][0].getFullYear() + "." +
    " - " + arrayOne[0][6].getDate() + "." + arrayOne[0][6].getMonth() + "." +  arrayOne[0][6].getFullYear() + ".";

var day2 = arrayOne[1][0].getDate() + "." +  arrayOne[1][0].getMonth() + "." +  arrayOne[1][0].getFullYear() + "." +
    " - " + arrayOne[1][6].getDate() + "." +  arrayOne[1][6].getMonth() + "." +  arrayOne[1][6].getFullYear() + ".";

【问题讨论】:

  • 请点击<> 并创建一个minimal reproducible example - 你的问题对于你想要达到的目标并不明显 - 例如var day = []; for (var i=0;i<10;i++) { day[i] = arrayOne[i][0].getDate()....
  • 在这种情况下,您可以做的是创建一个单独的函数,该函数将arrayOnevalue 作为参数并返回完成工作的输出字符串。然后你可以打电话给var day1 = myFunction(arrayOne,0)等等
  • 使用forEach 或简单的for loop 可以解决问题。

标签: javascript jquery arrays loops


【解决方案1】:

使用 for 循环:

//generator function to test principle
var arrayOne = [];
a = new Date();
for (var i = 0; i < 5; i++) {
  arrayOne[i] = [a, a, a, a, a, a, a];
}
//end

for (var i = 0; i < arrayOne.length; i++) {
  //note how we use window to assign day variable with index.
  window["day" + (i + 1)] = arrayOne[i][0].getDate() + "." + arrayOne[i][0].getMonth() + "." + arrayOne[i][0].getFullYear() + "." +
    " - " + arrayOne[i][6].getDate() + "." + arrayOne[i][6].getMonth() + "." + arrayOne[i][6].getFullYear() + ".";

  
}

console.log(day2);

【讨论】:

  • 非常感谢您的回答,是的,这基本上就是我想要实现的目标......但是我不熟悉这个技术窗口[“day”+(i + 1)],不是确定这到底是如何工作的,如果你能很快解释一下这里发生了什么..?谢谢!
  • 一旦你知道它就很简单了。 Javascript是面向对象的。这意味着浏览器中有一个主对象window。您可以使用括号表示法来访问对象的属性。因此,使用window[property],您可以访问全局范围内的变量,还可以将新属性分配给全局范围。
  • 非常有趣...所以基本上 window ["day"] 创建了一个可变天,很好的解决方案
最近更新 更多