for in是ES5标准,遍历key. (或是数组下标)
for of是ES6标准,遍历value.
let list = ["a", "b", "c"]
for (let item in list) {
console.log(item)
//结果是 0、1、2
}
for-in是为遍历对象而设计的,不适用于遍历数组。
遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0",“1”,"2"等是字符串
let list = ["a", "b", "c"]
for (let item of list) {
console.log(item)
//结果是 a、b、c
}
[] 普通数组推荐使用of,
{} 带字符串key对象用in。
let obj = {
name: "张三",
age: 30
}
for (let item in obj) {
console.log(item)
//结果是 name、age
}
for-of还支持字符串遍历:
s="hello";
for (let item of s) {
console.log(item)
//结果是 h、e、l、l、o
}
遍历对象的3种方法
方法1:
let obj = {
name: "张三",
age: 30
}
for (let item in obj) {
console.log(obj[item])
//结果是 张三、30
}
方法2:
let obj = {
name: "张三",
age: 30
}
console.log(Object.keys(obj))//输出:["name", "age"]
console.log(Object.values(obj))//["张三", 30]
方法3:
第三种:使用Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性(包含不可枚举属性)
遍历可以获取key和value
const obj = {
id:1,
name:'zhangsan',
age:18
}
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key+ '---'+obj[key])
})
输出结果: