js 函数改变数组内容
const dfs=(r,c,flow)=>{ flow[r][c]=true let list = [[r-1,c],[r+1,c],[r,c-1],[r,c+1]].forEach(([nr,nc])=>{ if( //保证在矩阵中 nr>=0&&nr<m&& nc>=0&&nc<n&& //防止死循环 !flow[nr][nc]&& //保证逆流而上 heights[nr][nc]>=heights[r][c] ){ dfs(nr,nc,flow) } }) }
//沿着海岸线逆流而上 for(let r = 0 ;r<m;r+=1){ dfs(r,0,flow1) dfs(r,n-1,flow2) } for(let c = 0;c<n;c+=1){ dfs(0,c,flow1) dfs(m-1,c,flow2) }
在leetcood中的417题中的矩阵深度遍历中。
对传入数组值的改变,成功影响到了外层。
parent(val) { if (val.areaData &&this.isfirst) { this.setDsctData(val.areaData) this.isfirst=false } }, setDsctData(data) { //let tmpData=data//显而易见的事,哪怕用临时变量来存在也只是调用地址 let tmpData=[...data]//奇怪的是我明明结构了但还是影响到了原来的地址 this.dsctData = tmpData.map(item => { item.child.shift()//在这里我明明传删除的只是传过来的data,但是居然连组件中的值也一起修改了,也就是说函数中传递对象的值是通过地址传播的 return item.child }).flat() },
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人