如何在JavaScript中实现数组元素x遍历所有位置的函数?
实现xRunning函数的正确方式
需求回顾
调用xRunning(["x", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"])需要返回一组数组,其中"x"依次从第一个位置移动到最后一个位置,其余位置保持为"-"。
你的代码问题分析
你当前的实现存在两个核心问题:
- 只返回单个数组:需求是返回多个数组(数量和输入数组长度一致),但你的函数仅返回了修改后的原数组。
- 错误修改所有元素:循环中把所有非"x"的元素都改成了"x",导致最终数组全是"x",完全不符合"x依次移动"的要求。
正确实现代码
function xRunning(array) { const result = []; const length = array.length; // 循环生成每个位置的数组 for (let i = 0; i < length; i++) { // 创建一个全为"-"的新数组 const newArr = Array(length).fill("-"); // 在当前索引位置设置为"x" newArr[i] = "x"; // 将新数组加入结果列表 result.push(newArr); } return result; }
代码解释
- 初始化结果数组:
result用来存储所有生成的子数组。 - 循环遍历每个位置:循环次数等于输入数组的长度,对应"x"要移动的每个位置。
- 创建新数组:每次循环都生成一个新的全"-"数组,避免修改原数组或之前生成的数组。
- 设置当前位置的"x":在当前循环的索引
i处将元素设为"x"。 - 收集结果:把生成的新数组加入
result,最后返回整个结果列表。
验证调用结果
调用xRunning(["x", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"])会返回:
[ ["x", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], ["-", "x", "-", "-", "-", "-", "-", "-", "-", "-", "-"], ["-", "-", "x", "-", "-", "-", "-", "-", "-", "-", "-"], // ... 中间省略 ["-", "-", "-", "-", "-", "-", "-", "-", "-", "x", "-"], ["-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "x"] ]
内容的提问来源于stack exchange,提问作者thalisson maximino
相关产品推荐
相关产品推荐

