美文网首页前端技术栈
js综合基础面试题整理

js综合基础面试题整理

作者: Ann_l | 来源:发表于2017-06-09 20:10 被阅读82次
    实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。#####

    【其实看见这题的时候,我的表情是 are u kidding me!你考点在哪里,后来我看了别人写的一些demo。放上代码以后,分析一下考点】

    function clone(obj) {
      var o
      switch (typeof obj) {
        case 'undefined':
          break;
        case "string":
          o = obj + ""
          break;
        case "number":
          o = obj - 0
          break;
        case "boolean":
          o = obj
          break
        case "object":
          if (obj === null) {
            o = null
          } else {
            if (Object.prototype.toString.call(obj) === '[object Array]') {
              o = []
              for (var i = 0; i < obj.length; i++) {
                o.push(clone(obj[i]))
              }
            } else {
              o = {}
              for (var k in obj) {
                o[k] = clone(obj[k])
              }
            }
          }
          break
        default:
          o=obj
          break
      }
      return o
    }
    var arr=[1,2,3,4,5]
    var arr1={1:'11'}
    console.log(clone(arr1))//{ '1': '11' }
    
    

    考点:
    1、判断类型的办法
    typeof 可以判断出5中基本类型number、string、undefined、bool、object.但object是复合型,怎么精准的判断object呢!使用Object.prototype.toString.call(obj)
    2、递归的使用
    3、考察对数据类型的了解

    数组查重#####

    这题去了5家面试,3家都出了这道题目。我一直在想这题除了到底意义在哪里,怎么根据这道题目考查一个小屌丝的水平呢。后来被考多了,我发现通过这题可以看出挺多,例如对es6的了解、算法基础等。上代码:

    第一种:常规方法#######
    
    var arr = [1, 2, 9, 3, 2, 4, 5]
    var arr2 = []
    for (var i = 0, len = arr.length; i < len; i++) {
      if (arr2.indexOf(arr[i]) < 0) {
        arr2.push(arr[i])
      }
    }
    console.log(arr2)
    
    第二种:es6的set#######
    var arr = [1, 2, 9, 3, 2, 4, 5]
    var arr3=new Set()
    arr.forEach(function (item,index,arr) {
      arr3.add(item)
    })
    console.log(arr3)//Set { 1, 2, 9, 3, 4, 5 }
    
    第三种:lodash的uniq#######

    宝宝真的懒...就爱用lodash
    附上使用网址:http://www.css88.com/doc/lodash/#_indexofarray-value-fromindex0

    相关文章

      网友评论

        本文标题:js综合基础面试题整理

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