类型 | 特点 | 举例 |
---|---|---|
Object.keys(obj) | 返回对象本身可直接枚举的属性(不含Symbol属性) | const obj = {a:'aaaaa',b:'bbbbb'}; Object.keys(obj); //['a', 'b'] |
Object.values(obj) | 返回对象本身可返回的属性值(不含Symbol属性) | const obj = {a:'aaaaa',b:'bbbbb'}; Object.values(obj); //['aaaaa', 'bbbbb'] |
Object.entries(obj) | 返回对象本身可枚举属性键值对相对应的数组(不包括Symbol值作为名称的属性) | const obj = {a:'aaaaa',b:'bbbbb'}; Object.entries(obj); //[['a', 'aaaaa'], ['b', 'bbbbb']] |
Object.getOwnPropertyNames(obj) | 返回对象所有自身属性的属性名(不包括Symbol值作为名称的属性) | const obj = {a:'aaaaa',b:'bbbbb'}; Object.getOwnPropertyNames(obj); //['a', 'b'] |
for…in | 遍历所有可枚举的属性(包括原型上的),然后可利用hasOwnProperty判断对象是否包含特定的自身(非继承)属性。for…in更适合遍历对象,不要使用for…in遍历数组 | const obj = {a:'aaaaa',b:'bbbbb'}; for(let key in obj){console.log(key);} |
forEach | 使用forEach遍历 | const obj = {a:'aaaaa',b:'bbbbb'};Object.values(obj).forEach(value => {console.log(value);}); |
注:其中,Object.keys(obj),Object.values(obj),Object.entries(obj),Object.getOwnPropertyNames(obj)的返回值均为数组;