如何在JavaScript ES6中从功能上遍历矩阵?
以下是我提交的关于Hackerrank挑战“楼梯”的代码: 功能楼梯{ //fill填写“未定义”项,这有助于创建新的n*n矩阵 让matrix=Arrayn.fill.map=>Arrayn.fill; matrix.foreachcurar,idY=>{ curArr.forEachcurVal,idX=>{ 曲线=idX+idY+1>=n?:''; process.stdout.writecurVal; }, [] console.log; }, []; } 当我使用楼梯6进行测试时,我确实得到了预期的结果: 但是,当我修改代码以检查矩阵时,如下所示: 功能楼梯{ //fill填写“未定义”项,这有助于创建新的n*n矩阵 让matrix=Arrayn.fill.map=>Arrayn.fill; matrix.foreachcurar,idY=>{ curArr.forEachcurVal,idX=>{ 曲线=idX+idY+1>=n?:''; }, [] }, []; console.logmatrix; } 以下是我得到的:如何在JavaScript ES6中从功能上遍历矩阵?,javascript,matrix,foreach,functional-programming,Javascript,Matrix,Foreach,Functional Programming,以下是我提交的关于Hackerrank挑战“楼梯”的代码: 功能楼梯{ //fill填写“未定义”项,这有助于创建新的n*n矩阵 让matrix=Arrayn.fill.map=>Arrayn.fill; matrix.foreachcurar,idY=>{ curArr.forEachcurVal,idX=>{ 曲线=idX+idY+1>=n?:''; process.stdout.writecurVal; }, [] console.log; }, []; } 当我使用楼梯6进行测试时,我确
[ [ undefined, undefined, undefined, undefined, undefined, undefined ],
[ undefined, undefined, undefined, undefined, undefined, undefined ],
[ undefined, undefined, undefined, undefined, undefined, undefined ],
[ undefined, undefined, undefined, undefined, undefined, undefined ],
[ undefined, undefined, undefined, undefined, undefined, undefined ],
[ undefined, undefined, undefined, undefined, undefined, undefined ] ]
因此,我的问题是:
为什么不修改矩阵?
是否有任何纯功能性的方法来解决这个问题,即仅使用map?
问题的原因
curVal是值类型,而不是引用类型。矩阵中的值不会被修改,因为curVal只是一个副本
一种解决方案:改变曲线=idX+idY+1>=n?:“”;进入矩阵[idY][idX]=idX+idY+1>=n?:“”
使用地图
这就是我要做的 const array=length,lookup=>array.from{length},i=>lookupi; 常量字符串=分隔符,长度,查找=>arraylength,lookup.joinseparator; 常数楼梯=n=> console.log 字符串\n,n,i=> 字符串,n,j=> i+j
;我绝对喜欢这个解决方案,因为它意味着在这个阶梯问题中,临时数组的索引引用是操作的主要关注点,而不是值引用。感谢这个直观的解决方案!我花了一段时间才明白spread操作符在这里做什么!谢谢,这太棒了!
[...Array(n).keys()].map((ignore, y)=>[...Array(n).keys()].map((ignore, x)=>(x+y+2>n)?'#':' '))