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
的情况类似。