【问题标题】:How can I loop this array?我怎样才能循环这个数组?
【发布时间】:2020-06-07 06:40:21
【问题描述】:

var today = new Date();
if (today.getDay() == 6 || today.getDay() == 0) {

  document.getElementById("name1").innerHTML = "WEEKEND";
  document.getElementById("name2").innerHTML = "WEEKEND";

} else {

  var d = new Date().getDay();
  var names1 = ['1', '2', '3'];
  var names2 = ['1', '2', '3', '4'];
  var n1 = names1.length;
  var n2 = names2.length;

  for (var i = 0; i < n1; i++) {
    document.getElementById("name1").innerHTML = names1[d - 1];
  }

  for (var j = 0; j < n2; j++) {
    document.getElementById("name2").innerHTML = names2[d - 1];
  }
}

我需要在屏幕上显示这些数组中的 2 个数字,但数组不相等,因此我希望较短的数组重新开始,并与较长数组中的剩余数字形成对。

基本上前提是每个工作日在屏幕上显示每个组的 1 个名称。

前:

1 1
2 2
3 3
1 4
2 1
3 2

等等

【问题讨论】:

  • 您要创建多少对?
  • 无限好:)
  • 我想要一个你知道的循环,比如日期更改时数组继续
  • 对不起,如果我说的很糟糕
  • 抱歉,我很难理解需要做什么,所以鉴于当前的描述,我想我无法为您提供帮助。

标签: javascript html css loops date


【解决方案1】:

可能的组合总数将是数组长度的乘积n1*n2

var d = 1; // new Date().getDay()
var names1 = ['1', '2', '3'];
var names2 = ['1', '2', '3', '4'];
var n1 = names1.length;
var n2 = names2.length;

for (var i = 0; i < n1 * n2 ; i++) {
  console.log(names1[i%n1], names2[i%n2]);
}

还有多余的代码,日期只用一个变量

var today = new Date().getDay()
if (today == 6 || today == 0) {

  document.getElementById("name1").innerHTML = "WEEKEND";
  document.getElementById("name2").innerHTML = "WEEKEND";

} else {
  // var d is the same as var today

【讨论】:

  • @Phong 我认为这个问题需要所有 12 种可能的组合,但只列出了 6 个,这就是在问题示例的末尾添加了 etc.
【解决方案2】:

给你:

var N = 20; // or whetever
var arr1 = [1, 2, 3];
var arr2 = [1, 2, 3, 4];

var res = [];
for(var i=0; i<N; i++){
  res.push(arr1[i%arr1.length]);
  res.push(arr2[i%arr2.length]);
}
console.log(res);

所以一般来说,对于任何步骤N,您的码头都是arr1[N%arr1.length], arr2[N%arr2.length]

【讨论】:

    【解决方案3】:

    一个优雅的解决方案是使用 %(模)运算符。该运算符给出第一个操作数除以第二个操作数后的余数。

    例如:

    7 % 2 = 1

    8 % 5 = 3

    如果我正确理解您的代码,您只想显示两个数字,分别在 ids name1name2 的每个文档元素中显示一个。在这种情况下,就不需要循环了。

    document.getElementById("name1").innerHTML = names1[d % n1];
    document.getElementById("name2").innerHTML = names1[d % n2];
    

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2017-12-20
      相关资源
      最近更新 更多