Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Object.entries()

这篇文章需要文法复核。如何帮忙。

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

Object.entries方法返回一个包含由给定对象所有可枚举属性的属性名和属性值组成的 [属性名,属性值] 键值对的数组,数组中键值对的排列顺序和使用for...in循环遍历该对象时返回的顺序一致(两者的主要区别是 for-in 还会遍历出一个对象从其原型链上继承到的可枚举属性)。

语法

Object.entries(obj)

参数

obj
返回该对象由可枚举属性名和对应属性值组成的的键值对。

描述

Object.entries() 返回一个所有元素为键值对的数组,其中键值对来自于给定的对象上面可直接枚举属性的属性名与属性值,这些键值对的顺序以键(属性名)为参考,与手动遍历该对象属性时的一致。

示例

var obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

// 类数组对象
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

// 带有随机(非顺序)排列属性名的类数组对象
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// getFoo是不可枚举属性
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = "bar";
console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]

// 非对象参数会被强行视为对象
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

将Object转化为Map对象

new Map() 构造函数接受一个包含键值对元素的可迭代数组。 借助Object.entries方法你可以很容易的将Object转换为Map:

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

Polyfill

为了兼容那些原生不支持Object.entries方法的旧环境,你可以在tc39/proposal-object-values-entrieses-shims/Object.entries找到一些解决方案。

规范

规范名称 规范状态 备注
ECMAScript 2017 Draft (ECMA-262)
Object.entries
Draft 首次定义

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 51.0 [1] 47 (47) 未实现 未实现 未实现 [2]
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 51.0 [1] 47.0 (47) 未实现 未实现 未实现 51.0 [1]

[1] 开启标志位。

[2] 查看 bug 150131

相关链接

文档标签和贡献者

 此页面的贡献者: OshotOkill
 最后编辑者: OshotOkill,