for in是一个非常实用的存在,既可以遍历数组,又可以遍历对象,所以我一般都是会用来遍历可迭代的数据,遍历数组和对象的时候,要注意使用万能遍历方式:
const users = [1, 3, 45, 6]// const users = {// 1: {},// 2: {},// }for (const key in users) {console.log('key 类型是', typeof key)if (Object.hasOwnProperty.call(users, key)) {const element = users[key]console.log('遍历的结果是', element)}}
需要使用Object.hasOwnProperty.call配合一起使用。
但是需要注意的是,遍历的时候,key的数据类型是string类型!!!!!!!!!!不论你是遍历的数组还是对象,不论之前对象里面存的是number还是string,key的值始终是string类型,这是一个好大的坑:
如果不仔细研究,你会发现我明明使用的key +1但是出现的结果却是:01这种
所以,如果想正常使用加法来累加key的索引,要将其转化为int类型:
parseInt(key)