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
相关产品推荐
相关产品推荐

