Object.keys():获取对象的键,es6之前就有的方法;
Object.values():获取对象的值,es6新增方法;
Object.entries():获取对象的键与值,es6新增方法。
基本用法
const person = {
name: 'Jae',
age: 22
};
cnosole.log(Object.keys(person)); // ["name", "age"]
cnosole.log(Object.values(person)); // ["Jae", 22]
cnosole.log(Object.entries(person)); // [["name", "Jae"], ["age", 22]]
与数组类似方法的区别
- 数组的 keys() 、values() 、entries 方法是实例方法,返回的都是Iterator
- 对象的 Object.keys 、Object.values 、Object.entries 方法是构造函数方法,返回的都是数组
const arr = [1, 2, 3];
console.log(arr.keys()); // Array Iterator {}
console.log(arr.values()); // Array Iterator {}
console.log(arr.entries()); // Array Iterator {}
应用
配合 for…of 循环遍历对象
const person = {
name: 'Jae',
age: 22,
sex: 'male'
};
for(const item of person) {} // 报错,对象不能直接遍历
for(const key of Object.keys(person)) {
console.log(key); // name age sex
}
for(const value of Object.values(person)) {
console.log(value); // Jae 22 male
}
for(const [key, value] of Object.entries(person)) {
console.log(key, value); // name Jae
// age 22
// sex male
}
注意:Object.keys 、Object.values 、Object.entries 并不能保证顺序一定是你看到的样子,与 for…in 的情况类似。