解析 头条面试题

2019-09-12

题目如下:

第一题: 给定一个多为数组arr,实现一个方法获取数组的最大深度(维度)

例子1:arr=[1,2,[3,4,[6]]]  则返回3
    例子2:arr=[3,4,[6]]  则返回2

    最终代码:(此处只解决单项维度问题)
        var arr=[5,[6,7,8,[3,[9]]]]
        function deep(arr,count=0){
              count++;
              for(var i=0;i<arr.length;i++){
                  if(Object.prototype.toString.call(arr[i]) == '[object Array]'){
                     count= deep(arr[i],count);
                  }
              }
          return count;
        }
         console.log(deep(arr))

   未解决多项维度问题,例如:arr=[1,2,[3,4,5],[2,3,4[6]]];      
   最终代码1:
    var arr= [1,2,[3,4],[5,6,7,[9]]]
        function test4(arr = []) {
          let arrDeepLen = [];
          for (let i = 0; i < arr.length; i++) {
            let item = arr[i];
            if (Array.isArray(item)) {
             const c= test1(item);

             arrDeepLen.push(c+1);
            }
          }

          function test1(arr = [], count = 0) {
            count++;
            for (let i = 0; i < arr.length; i++) {
              const item = arr[i];
              if (Array.isArray(item)) {
                count = test1(item, count);
              }
            }
            return count;
          }
          return Math.max.apply(null,arrDeepLen);
       }
  最终代码2:           
         function deep(arr, count = 0, num = []) {
             count++
            for (let index in arr) {
                if (Array.isArray(arr[index])) {
                    deep(arr[index], count, num)
                } else {
                    num.push(count)
                }
            }

            return Math.max.apply(null, num)
        }

        let arr = [1, 2, 3, ['n', 'i', ['t', ['nihao']]], ['a', 'b']]
       console.log(deep(arr))
  考察范围:回调,此处注意回调堆栈的执行顺序,需要对每次执行返回的数赋值

第二题: 实现一个方法,生成数组[1,2,3,4,...99],然后将数组内的项随机打乱,每一个数 出现在任意一位置的概率相同。

原文链接:segmentfault.com

上一篇:Web Api · 有关AJAX
下一篇:noddity-installer
相关教程
关注微信

扫码加入 JavaScript 社区

相关文章

首次访问,需要验证
微信扫码,关注即可
(仅需验证一次)

欢迎加入 JavaScript 社区

号内回复关键字:

回到顶部