[JS]Object.keys, values, entries

Object.keys, values, entries

对于普通对象,下列这些方法是可用的:

Object.keys(obj) —— 返回一个包含该对象所有的键的数组。

Object.values(obj) —— 返回一个包含该对象所有的值的数组。

Object.entries(obj) —— 返回一个包含该对象所有 [key, value] 键值对的数组。

 1 let obj = {
 2   name: "jack",
 3   age: 20,
 4   sex: "man",
 5 }
 6
 7 let keys = Object.keys(obj);
 8 console.log(keys); // ["name", "age", "sex"]
 9
10 let values = Object.values(obj);
11 console.log(values); // ["jack", 20, "man"]
12
13 let entries = Object.entries(obj);
14 console.log(entries); // [ ["name", "jack"], ["age", 20], ["sex", "man"] ]
15 // 返回值均为数组

与 Map Set 方法的区别

写法不同:map.keys()

返回值的区别:Object.* 方法返回的是“真正的”数组对象,而不只是一个可迭代项。

 1 let map = new Map([
 2   [‘cucumber‘, 500],
 3   [‘tomatoes‘, 350],
 4   [‘onion‘, 50],
 5 ]);
 6
 7 console.log(map); // {"cucumber" => 500, "tomatoes" => 350, "onion" => 50}
 8
 9 // 返回可迭代项
10 let mapKeys = map.keys();
11 console.log(mapKeys); // {"cucumber", "tomatoes", "onion"}
12 console.log(Object.keys(map)); // []
13
14 let mapValues = map.values();
15 console.log(mapValues); // {500, 350, 50}
16 console.log(Object.values(map)); // []
17
18 let mapEntries = map.entries();
19 console.log(mapEntries); // {"cucumber" => 500, "tomatoes" => 350, "onion" => 50}

Object.keys/values/entries 会忽略 symbol 属性

如果我们也想要 Symbol 类型的键,可以使用方法 Object.getOwnPropertySymbols,它会返回一个只包含 Symbol 类型的键的数组。另外,还有一种方法 Reflect.ownKeys(obj),它会返回所有键。

 1 let john = Symbol("human");
 2 let apple = Symbol("fruit");
 3 let obj1 = {
 4   [john]: "human",
 5   cat: "animal",
 6   [apple]: "fruit",
 7 }
 8 console.log(obj1); // {cat: "animal", Symbol(human): "human", Symbol(fruit): "fruit"}
 9
10 let obj1Keys = Object.keys(obj1);
11 console.log(obj1Keys); // ["cat"] 会忽略 symbol 属性
12
13 let obj1Symble = Object.getOwnPropertySymbols(obj1);
14 console.log(obj1Symble); // [Symbol(human), Symbol(fruit)]
15
16 let obj1Symbles = Reflect.ownKeys(obj1);
17 console.log(obj1Symbles); // ["cat", Symbol(human), Symbol(fruit)] 返回所有键的数组

转换对象

对象缺少数组存在的许多方法,例如 map 和 filter 等。

如果我们想应用它们,那么我们可以在 Object.entries 之后使用 Object.fromEntries:

使用 Object.entries(obj) 从 obj 获取由键/值对组成的数组。

对该数组使用数组方法,例如 map。

对结果数组使用 Object.fromEntries(array) 方法,将结果转回成对象。

 1 let prices = {
 2   banana: 3,
 3   orange: 2,
 4   meat: 7,
 5 }
 6
 7 let newPrices = Object.fromEntries(
 8   Object.entries(prices).map(( [key, value] ) => [key, value * 2] )
 9 )
10 console.log(newPrices); // {banana: 6, orange: 4, meat: 14}

原文地址:https://www.cnblogs.com/feng-fengfeng/p/12401413.html

时间: 2024-08-09 23:29:25

[JS]Object.keys, values, entries的相关文章

js Object.keys

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这

Object.keys(),Object.values(),Object.entries()

Object.keys(),Object.values(),Object.entries() Object.keys() ES5 引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名. var obj = { foo: 'bar', baz: 42 }; Object.keys(obj) // ["foo", "baz"] ES2017 引入了跟Object.keys配套的Object.val

for in 与 Object.keys 与 hasOwnProperty区别

1.结论 for in遍历对象所有可枚举属性 包括原型链上的属性 Object.keys遍历对象所有可枚举属性 不包括原型链上的属性 hasOwnProperty 检查对象是否包含属性名,无法检查原型链上是否具有此属性名 2.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport

Object.keys(),Object.values(),Object.entries()

1. (1)Object.keys() //返回 键 数组 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名. eg:var obj = {a:1,b:'gy'} Object.keys(obj) // ['a','b'] (2)Object.values() //返回 值 数组 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值 eg1:var obj = {a:1,b:'gy'} Object.values(obj

遍历对象属性(for in、Object.keys、Object.getOwnProperty)

js中几种遍历对象的方法,包括for in.Object.keys.Object.getOwnProperty,它们在使用场景方面各有不同. for in 主要用于遍历对象的可枚举属性,包括自有属性.继承自原型的属性 var obj = {"name":"Poly", "career":"it"} Object.defineProperty(obj, "age", {value:"forever

Object.keys方法之详解

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'}; console.log(Object.keys(obj)); //['a','b'] var obj1 = { 100: "a", 2: "b", 7: "c"}; console.log(Object.keys(obj1)); /

Object.keys 函数 (JavaScript)

Object.keys 函数 (JavaScript) 返回对象的可枚举属性和方法的名称. 在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'}; console.log(Object.keys(obj)); //['a','b'] var obj1 = { 100: "a", 2: "b", 7: &qu

Object.keys 返回由一个给定对象的自身可枚举属性组成的数组

在实际开发中,我们有时需要知道对象的所有属性, 原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 http://blog.csdn.net/u014035151/article/details/53135610

for in,Object.keys()与for of的用法与区别

Array.prototype.sayLength=function(){ console.log(this.length); } let arr = ['a','b','c','d']; arr.name='数组'; Object.defineProperties(arr,{ type:{ value:true, writable:true, enumerable:true } }) // for in 一般用于遍历对象的属性: 1.作用于数组的for in除了会遍历数组元素外,还会遍历自定义