📜  JavaScript 中的 Object.keys() 和 Object.entries() 方法有什么区别?(1)

📅  最后修改于: 2023-12-03 15:16:09.188000             🧑  作者: Mango

JavaScript 中的 Object.keys() 和 Object.entries() 方法有什么区别?

在 JavaScript 中,Object 是一种特殊的数据类型,它可以存储键值对。Object.keys() 和 Object.entries() 方法是用于获取对象键和值的两种方法,它们会返回一个数组,但它们的返回结果略有不同。

Object.keys()

Object.keys() 方法会返回一个对象所有可枚举属性的数组,即返回一个由对象属性名组成的数组,其顺序与在对象上循环遍历的顺序一致。该方法接受一个对象作为参数。

const car = {
  brand: 'Toyota',
  model: 'Camry',
  year: 2021
};
const keys = Object.keys(car);
console.log(keys); // ['brand', 'model', 'year']

上述代码中,Object.keys() 方法返回了一个包含 car 对象中所有可枚举属性的数组。

Object.entries()

Object.entries() 方法也会返回一个对象所有可枚举属性的数组,但数组中的每个元素都是一个包含键和值的数组。该方法接受一个对象作为参数。

const car = {
  brand: 'Toyota',
  model: 'Camry',
  year: 2021
};
const entries = Object.entries(car);
console.log(entries); // [['brand', 'Toyota'], ['model', 'Camry'], ['year', 2021]]

上述代码中,Object.entries() 方法返回了一个包含每个可枚举属性的键名和键值的数组,其中键名和键值作为一个数组的元素。

区别

Object.keys() 返回一个由对象键组成的数组,而 Object.entries() 返回的数组中每个元素都是包含键和值的数组。换句话说,Object.keys() 返回的是对象所有属性的键名数组,而 Object.entries() 返回的是对象所有属性的键值对数组。

除此之外,Object.keys() 返回的数组中元素的顺序与在对象上循环遍历的顺序一致,而 Object.entries() 返回的数组元素顺序与 Object.keys() 的顺序相同。

因此,当我们需要获取一个对象所有属性的值时,如果使用 Object.keys(),需要再利用遍历的方式获取每个属性的值;如果使用 Object.entries(),则可以直接获取每个属性的键值对数组。