JavaScript Object.entries() 方法

Object.entries() 语法

Object.entries() 是 JavaScript 的一个静态方法,它会以 “数组的形式” 返回指定对象所有可枚举的自身属性的 “键值对” 。

语法:

Object.entries(obj)

说明:

Object.entries() 方法接收单个参数。

  • obj(必选):表示要操作的对象。

对于 Object.entries(),小伙伴们要清楚以下几点。

  • Object.entries() 只返回字符串键的属性,不包括 Symbol 属性的键值对。
  • Object.entries() 只返回可枚举的属性。通过 Object.defineProperty() 设置为 enumerable: false 的属性将不会被返回。
  • Object.entries() 只返回自身属性,不包括原型链上的继承属性。

Object.entries() 摘要

属于 JavaScript Object 对象
使用频率
官方文档 查看
MDN 查看

Object.entries() 示例

接下来,我们通过几个简单的例子来讲解一下 Object.entries() 方法是如何使用的。

示例 1:Object.entries() 基本用法

const obj = {name: "Jack", age: 20};
console.log(Object.entries(obj));

运行结果如下。

[ [ 'name', 'Jack' ], [ 'age', 20 ] ]

分析:

Object.entries() 的参数不仅可以是 Object 对象,还可以是其他内置对象(Number、Array 等)。只不过参数为不同内置对象时,返回值也不同,请看下面几个例子。

示例 2:Object.entries() 参数是一个数字

const num = 2077;
console.log(Object.entries(num));

运行结果如下。

[]

分析:

当 Object.entries() 参数是一个数字时,其返回值必定是一个空数组。

示例 3:Object.entries() 参数是一个字符串

const str = "绿叶网";
console.log(Object.entries(str));

运行结果如下。

[ [ '0', '绿' ], [ '1', '叶' ], [ '2', '网' ] ]

分析:

对于字符串来说,它的键其实是从 0 开始的下标。

示例 4:Object.entries() 参数是一个数组

const arr = ["Python", "C++", "Java"];
console.log(Object.entries(arr));

运行结果如下。

[ [ '0', 'Python' ], [ '1', 'C++' ], [ '2', 'Java' ] ]

分析:

对于数组来说,它的键也是从 0 开始的下标。

示例 5:Object.entries() 只会获取可枚举属性

const user = {
    name: "Jack",
    age: 20
};

// 添加一个不可枚举属性
Object.defineProperty(user, "id", {
    value: "007",
    enumerable: false
});

const entries = Object.entries(user);
console.log(entries);

运行结果如下。

[ [ 'name', 'Jack' ], [ 'age', 20 ] ]

分析:

从结果可以看出,Object.entries() 只会返回可枚举的自身属性(name、age)的键值对,而忽略了不可枚举属性(id)。

示例 6:Object.entries() 结合 Map

const obj = { foo: "bar", baz: 42 };
const map = new Map(Object.entries(obj));

console.log(map);

运行结果如下。

Map(2) { 'foo' => 'bar', 'baz' => 42 }

分析:

Object.entries() 最重要的用途之一,就是配合 new Map() 来将普通对象转换为 Map 对象。

Object.keys()、Object.values() 和 Object.entries() 的区别

Object.keys()Object.values()、Object.entries() 这 3 个是 “好基友” 关系,它们都是静态方法,只能供类名调用。三者之间的区别如下:

  • Object.keys() 会返回一个数组,该数组包含对象所有的 “键”。
  • Object.values() 会返回一个数组,该数组包含对象所有的 “值”。
  • Object.entries() 会返回一个数组,该数组包含对象所有的 “键值对”。

上一篇: Object.values()

下一篇: Object.fromEntries()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号