美文网首页
深度遍历数组

深度遍历数组

作者: Dolores_520 | 来源:发表于2017-08-28 14:27 被阅读0次
创建一个函数,接收一数组为参数,如果数组内元素为一个数组,则将其内部的元素取出作为根数组的元素,如果元素为对象进行深拷贝,最后返回一个新的数组。如:
func([1,2,[3,4],{age:1},5]) = [1,2,3,4,{age:1},5];
func([1,2,[3,4,[5,6],7],{age:1},8,[9,10]]) = [1,2,3,4,5,6,7,{age:1},8,9,10];
刚看到这道题,咦,这不是对数组的判断和递归么,实现代码如下
 var newArr = [];
 function func(arr) {
    for(var i = 0; i < arr.length; i++) {
        if(arr[i] instanceof Array ) {
            func(arr[i]);
        } else {
            newArr.push(arr[i]);
        }
    }
    return newArr;
 }
朋友看了后说有问题,没有实现对对象的深拷贝

深拷贝 : 简单理解即将A拷贝给B,修改A的值,B不发生变化

对象的深拷贝
function deepCopy(source) {
    var result={};
    for(var key in source) {
       result[key] = typeof source[key]=='object'? deepCoyp(source[key]): source[key];
    }
    console.log(result);
    return result;
}
数组重新遍历
var newArr = [];
function func(arr) {
    for(var i = 0; i < arr.length; i++) {
       if(Array.isArray(arr[i])) {
           func(arr[i]);
       } else if((typeof arr[i] == "object") && !Array.isArray(arr[i])) {
           newArr.push(deepCopy(arr[i]));
       } else {
           newArr.push(arr[i]);
       }
    }
    return newArr;
}

相关文章

  • 用链表实现栈(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

  • 用链表实现队列(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

  • javascript实现多叉树 深度优先遍历和广度优先遍历(代码

    本文目录 回顾数组本篇使用的五个方法 深度优先遍历 (递归方法) 思路+代码 深度优先遍历 (非递归方法) 思...

  • 二叉树的最大/最小深度

    给定如下二叉树, 分别返回其最大深度4, 最小深度2。 求最大深度 按照广度遍历 跟层级遍历类似,最后返回总数组的...

  • 深度优先遍历(DFS)和广度优先遍历(BFS)

    深度优先遍历 1 构造 是否遍历过数组2 构造队列 添加未遍历过元素3 取元素 遍历 添加未遍历元素进队列4 全部...

  • 图和遍历

    邻接矩阵定义一个图 其实就是二维数组来定义 图的遍历 深度搜索遍历 2.广度搜索遍历 遍历

  • 深度遍历数组

    创建一个函数,接收一数组为参数,如果数组内元素为一个数组,则将其内部的元素取出作为根数组的元素,如果元素为对象进行...

  • 数组ES6新增-arr数组扁平化:flat扁平化多维数组 / f

    flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 ...

  • 数组-flat

    描述 flat方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组元素合并为一个新数组返回 语法 ...

  • 存储结构 二维数组,横纵坐标为点,如果有线连接,value为1 数组+链表 遍历 深度遍历:递归,可以借助树模型参...

网友评论

      本文标题:深度遍历数组

      本文链接:https://www.haomeiwen.com/subject/bomwdxtx.html