javascript 中Object.entries
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in
循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
例子:
const log = console.log;function Animal(name) {this.name = name;
}Animal.prototype.run = function() {console.log(`${this.name} run`);
}function Cat(name) {Animal.call(this, name);this.age = 8;
}Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.constructor = Cat;let c = new Cat("miao");
log("c = ", c);
for (let [k, v] of Object.entries(c)) { //不枚举原型中的属性log("entries k = ", k, ", v = ", v);
}for (let k in c) {log("in k = ", k, ", v = ", c[k]);
}
c.run();
结果:
$ node for.js
c = Cat { name: 'miao', age: 8 }
entries k = name , v = miao
entries k = age , v = 8
in k = name , v = miao
in k = age , v = 8
in k = constructor , v = [Function: Cat]
in k = run , v = [Function]
miao run
例子:
const object1 = {a: 'somestring',b: 42
};for (const [key, value] of Object.entries(object1)) {console.log(`${key}: ${value}`);
}// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
语法
Object.entries(obj)
参数
obj
可以返回其可枚举属性的键值对的对象。
返回值
给定对象自身可枚举属性的键值对数组。
描述
Object.entries()
返回一个数组,其元素是与直接在object
上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
示例
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]// array like object
const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]// array like object with random key ordering
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]// getFoo is property which isn't enumerable
const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
myObj.foo = 'bar';
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]// non-object argument will be coerced to an object
console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}// Or, using array extras
Object.entries(obj).forEach(([key, value]) => {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});
将Object
转换为Map
new Map()
构造函数接受一个可迭代的entries
。借助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-entries 中找到Object.entries的示例(如果你不需要任何对IE的支持),在 es-shims/Object.entries 资料库中的一个polyfill,或者你可以使用下面列出的简易 polyfill。
if (!Object.entries)Object.entries = function( obj ){var ownProps = Object.keys( obj ),i = ownProps.length,resArray = new Array(i); // preallocate the Arraywhile (i--)resArray[i] = [ownProps[i], obj[ownProps[i]]];return resArray;};
对于上述 polyfill 代码片段,如果你需要 IE9 以下的支持,那么你还需要一个 Object.keys polyfill(如 Object.keys
页面上的)。
javascript 中Object.entries相关推荐
- JavaScript中Object.entries(obj)
Object.entries(obj) 该方法返回对象 obj 自身的可枚举属性的键值对数组.结果是一个二维数组,数组中的元素是一个由两个元素 key ,value 组成的数组. let person ...
- JavaScript中Object对象方法超详细讲解举例说明仅此一篇
JavaScript中Object对象方法超详细讲解举例说明仅此一篇 Object.assign() Object.create() Object.values() Object.entries() ...
- JavaScript中Object的总结
基于原型继承,动态对象扩展,闭包,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一. 这里有一个很重要的概念需要特别指出:在JavaScript中,包括所有的函数,数组,键值对和 ...
- JavaScript中Object对象深度遍历
Object对象深度遍历 支持Object和Array混合型对象遍历.其中用到的对象类型判断方法,详见<JavaScript中Object对象类型判断> // 递归实现 // obj 为父 ...
- JavaScript中Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3 1. 在E ...
- JS中Object.entries()方法
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for-in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性). co ...
- 如何理解JavaScript中Object.defineProperty【一】
前言 当我们了解一个方法时,建议从以下几个维度着手 1.方法的定义 2.了解方法的使用场景 3.在场景中解决什么问题 带着这样的好奇心,去学习.研究,我们可能更好的理解.掌握.运用它 复制代码 定义 ...
- JavaScript 中 Object ,Prototype 相关的属性和方法
1.Objuect 类型 Object 类型是所有对象的基类型,可以用 new 运算符产生一个 Object 类型. 开发者可以通过产生 Object 类型的实例并向其动态添加属性和方法来产生自己需要 ...
- JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别
大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性,例如 const obj = {p ...
最新文章
- Java(三):序列化
- 科研人员多维度测试GPT-3发现:它并不是一名“好学生”
- 解决SpringMVC中的 Could not find acceptable represent
- 牛客网 【每日一题】5月28日题目精讲 Protecting the Flowers
- python中location_使用python请求模块时的LocationValueError
- git(8)---git merge 和 git rebase 小结
- Apache 服务器的安全策略
- L1-017. 到底有多二-PAT团体程序设计天梯赛GPLT
- Vuex的API文档
- 流畅的python和cookbook学习笔记(五)
- Android ConstraintLayout布局详解
- 在遇到移动硬盘无法访问的情况下,如何无需格式化地修复硬盘?
- 数学建模 Lingo 基本算法模板
- 为什么程序员 996 会猝死,而老板 007 却不会?
- HDU - 2586 - How far away ? (最短路)
- 安装.net补丁后mscorsvw.exe占CPU100%的问题
- 基于Altium Designer进行单片机逻辑系统及模拟电路原理图设计
- 循环神经网络之LSTM、GRU
- Android ListView下拉刷新
- 秒杀设计 mysql_如何设计秒杀系统?