在 ES10 中,Object 对象新增了两个方法:Object.entries() 和 Object.values()。这两个方法能够让我们更方便地操作对象的属性和值。本文将详细介绍这两个方法的使用方法,并给出一些示例代码。
Object.entries()
Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,其排列顺序与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链上的属性)。数组中的每个元素都是一个包含两个元素的数组,第一个元素是属性名,第二个元素是属性值。
下面是 Object.entries() 方法的基本语法:
Object.entries(obj)
其中,obj 表示要获取键值对的对象。
下面是一个示例代码:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
上述代码中,我们定义了一个对象 obj,它有两个属性 foo 和 baz。然后我们使用 Object.entries() 方法获取 obj 的键值对数组,并将其输出到控制台。
需要注意的是,Object.entries() 方法只会返回对象自身的可枚举属性的键值对数组,不包括原型链上的属性。如果要获取所有属性的键值对,可以使用 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法,再将它们合并到一个数组中。
Object.values()
Object.values() 方法返回一个给定对象自身可枚举属性的值的数组,其排列顺序与使用 for...in 循环遍历该对象时返回的顺序一致。与 Object.entries() 方法不同的是,它只返回属性的值,不包括属性名。
下面是 Object.values() 方法的基本语法:
Object.values(obj)
其中,obj 表示要获取值的对象。
下面是一个示例代码:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // [ 'bar', 42 ]
上述代码中,我们定义了一个对象 obj,它有两个属性 foo 和 baz。然后我们使用 Object.values() 方法获取 obj 的值的数组,并将其输出到控制台。
需要注意的是,Object.values() 方法只会返回对象自身的可枚举属性的值的数组,不包括原型链上的属性。如果要获取所有属性的值的数组,可以使用 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法,再将它们合并到一个数组中。
总结
Object.entries() 和 Object.values() 方法是 ES10 中新增的两个方法,它们能够更方便地操作对象的属性和值。Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,Object.values() 方法返回一个给定对象自身可枚举属性的值的数组。需要注意的是,它们只会返回对象自身的可枚举属性,不包括原型链上的属性。
在实际开发中,我们可以使用这两个方法来遍历对象的属性和值,或者将对象转换成数组进行一些操作。下面是一个示例代码:
-- -------------------- ---- ------- ----- --- - - ---- ------ ---- -- -- ----- ------- - -------------------- ----- ------ - ------------------- ---------------------- ------- -- - -------------------- ----------- --- ----- --- - ------------------- ---- -- --- - ---- --- -----------------
上述代码中,我们首先使用 Object.entries() 和 Object.values() 方法分别获取 obj 的键值对数组和值的数组。然后,我们使用 forEach() 方法遍历键值对数组,并输出每个属性的名字和值;使用 reduce() 方法计算值的总和,并输出到控制台。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6607faeed10417a222699b52