JavaScript变量拼接失败求助:数组值拼接为字符串出错
你的代码无法正常工作的原因及修复方案
错误点1:二维数组访问方式错误
JavaScript中访问二维数组的元素必须用arr[i][j],而不是arr[i,j]。arr[i,j]实际是利用逗号运算符的特性,返回最后一个表达式的值,等价于arr[j],这会导致你访问的不是目标位置的元素,甚至可能触发数组越界。
错误点2:变量data的声明位置错误
你在循环内部用let data声明变量,意味着每次循环都会创建一个全新的局部data变量。第一次执行data + arr[...]时,data未初始化,值为undefined,拼接后会得到undefined加元素值的无效结果,完全无法实现累积拼接的效果。
错误点3:数组索引遍历范围错误
JavaScript数组的索引从0开始,你的10行9列数组对应的索引范围是:
- 行索引:0 到 9(共10行)
- 列索引:0 到 8(共9列)
你的循环从i=1到i<11、j=1到j<10,会跳过第1行(索引0)和第1列(索引0)的元素,同时当i=10、j=9时,会访问数组不存在的位置,得到undefined。
修复后的代码示例
// 先在循环外初始化空字符串 let data = ''; // 遍历所有行(0到9) for (let i = 0; i < 10; i++) { // 遍历当前行的所有列(0到8) for (let j = 0; j < 9; j++) { // 正确访问二维数组元素并拼接 data += arr[i][j]; } }
内容的提问来源于stack exchange,提问作者alicem
相关产品推荐
相关产品推荐

