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()
    },
复制代码

 

posted @   前端路远且长  阅读(422)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示