You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组遍历问题:如何正确拆分数组并调用getDay()方法

正确遍历数组并处理日期的解决方案

原代码问题

你的代码仅输出第一个日期,核心原因是循环内覆盖了原数组变量:
第一次循环执行cars = cars[i]后,原数组被替换成字符串'2022-12-1',后续循环的cars.length变成该字符串的长度,cars[i]访问的是字符串字符而非原数组元素,导致无法遍历剩余日期。

正确实现

以下几种写法可实现遍历所有日期、为日期编号并调用getDay()的需求:

1. 普通for循环(不修改原数组)

var cars = ['2022-12-1', '2022-12-2', '2022-12-3', '2022-12-4'];

for(var i = 0; i < cars.length; i++){
  const dateStr = cars[i];
  const date = new Date(dateStr);
  // getDay()返回0(周日)-6(周六),映射为中文星期
  console.log(`编号${i+1}: ${dateStr},星期${['日','一','二','三','四','五','六'][date.getDay()]}`);
}

2. forEach循环(简洁遍历)

var cars = ['2022-12-1', '2022-12-2', '2022-12-3', '2022-12-4'];

cars.forEach((dateStr, index) => {
  const date = new Date(dateStr);
  console.log(`编号${index+1}: ${dateStr},星期${['日','一','二','三','四','五','六'][date.getDay()]}`);
});

3. for...of循环(ES6+语法)

var cars = ['2022-12-1', '2022-12-2', '2022-12-3', '2022-12-4'];

let num = 1;
for(const dateStr of cars){
  const date = new Date(dateStr);
  console.log(`编号${num++}: ${dateStr},星期${['日','一','二','三','四','五','六'][date.getDay()]}`);
}

输出结果

以上代码都会输出:

编号1: 2022-12-1,星期四
编号2: 2022-12-2,星期五
编号3: 2022-12-3,星期六
编号4: 2022-12-4,星期日

内容的提问来源于stack exchange,提问作者Bruno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:05:12