[type]的问题

function uniqArray (arr) {
    var resArr = []
    var tempObj = {}
    for (var i = 0; i < arr.length; i++) {
      var val = arr[i]
      var type = typeof (val)
      if (!tempObj[val]) {
      
        tempObj[val] = [type]
        resArr.push(val)
      } else if (tempObj[val].toString().indexOf(type) < 0) {
       
        tempObj[val].push(type)
        resArr.push(val)
      }
    }
    console.log(tempObj)
    return resArr
  }

tempObj[val]=[type]中可以直接用type 不加[]吗 这个[]是起什么作用的

tempObj[val].push()为什么是用tempObj[val]而不是直接用数组tempObj[]完事

阅读 2k
2 个回答
  1. [] 是为了让 tempObj[val] 对应的数据类型是数组
  2. 如果直接使用 tempObj[],则得到的 tempObj 是一个数组
    var myarr=["1",1,null,undefined,[],{},function(){},true];
    uniqArray(myarr);//调用题主的方法。这方法里打印了tempObj  
    //得到 {
        "":["object"],//为什么有个"" 空字符窜
        "1":["string"],
        1:["number"],
        null:["object"],
        undefined:["undefined"],
        [object Object]:["object"],
        true:["boolean"],
        undefined:["undefined"],
        a:["string"],
        b:["string"]
        }
  所以这个方法有什么意义。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题