1. Object.keys

返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致

// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']// getFoo 把他设置成不可枚举的
var myObj = Object.create({}, {getFoo: {value: function () { return this.foo; }}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo'] 结果就是不能遍历不可枚举的

如果想要遍历不可枚举属性用 Object.getOwnPropertyNames

var my_obj = Object.create({}, {getFoo: {value: function() { return this.foo; },enumerable: false}
});
my_obj.foo = 1;console.log(Object.getOwnPropertyNames(my_obj).sort()); // ["foo", "getFoo"]

2. Object.values

一个包含对象自身的所有可枚举属性值的数组。

Object.values(obj)
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']

3. Object.entries

给定对象自身可枚举属性的键值对数组。

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

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

Object.keys、Object.values、Object.entries详解相关推荐

  1. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换

    JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...

  2. Object.keys(obj)与Object.values(obj)的用法

    语法 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有枚举属性的字符串数组 传入对象,返回属性名 1 var obj = {'a':'123','b' ...

  3. for in、for of、forEach、Object.keys(obj)、Object.getOwnPropertyNames(obj)的区别、优缺点和使用场景

    先做一个测试题: const arr = [1, 2, 3] arr.name = 'name' // 不要这么做,只是为了测试 Array.prototype.test = function () ...

  4. Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解

    多态 public class Hello {public static void main(String[] args) {Animal d = new Dog();Animal c = new C ...

  5. Object类下面的一些方法详解

    1.Object() ​ Object类的构造方法. 2.registerNatives() ​ 为了使JVM发现本机功能,他们被一定的方式命名.例如,对于java.lang.Object.regis ...

  6. 一文速学(十八)-数据分析之Pandas处理文本数据(str/object)各类操作+代码一文详解(三)

    目录 前言 一.子串提取 提取匹配首位子串 提取所有匹配项(extractall)

  7. java中的values函数_详解java 中valueOf方法实例

    case1:Object 对象转String 需要强调的是String.valueOf()方法,当参数为类型是object,且值时null的时候他的处理方式public static String v ...

  8. python keyboard backspace_selenium键盘按键Keys类及键盘码详解

    selenium可以操作鼠标,此外它的Keys()类提供了操作键盘的途径,因为键盘上几乎所有按键都可以用Keys()类实现. 之前我们一直用元素的send_keys()方法输入文字,其实该方法也可以输 ...

  9. java编程里的values怎么使用,详解Java编程中super关键字的用法

    这篇文章主要介绍了Java编程中this与super关键字的用法,包括从内存结构方面分析super的作用域,需要的朋友可以参考下 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程 ...

最新文章

  1. Qt程序启动画面播放(gif与swf两种动画格式)
  2. python numpy np.fromstring()函数(从字符串文本中提取数字,返回一维数组)(爬虫提取数字挺好用的)
  3. VC++中,如何定义callback函数和它的触发事件?
  4. iOS url出现特殊字符处理 -- stringByAddingPercentEncodingWithAllowedCharacters
  5. zoj 1006 do the untwist
  6. 测试工程师听了想打人
  7. 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
  8. 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
  9. python3.7怎么设置字体大小,python字体大小如何设置
  10. 探访厦航飞机女“医生” 有机务“熊猫”美誉
  11. C语言学习笔记-各项为正整数的一元二次方程的十字交叉法因式分解
  12. lambda x:x*x
  13. 《经济学通识》十一、企业该不该有钱、慈善
  14. iOS中block的详解weakSelf、strongSelf-转自唐巧
  15. 直播小程序推出,解锁2018微信直播新玩法
  16. 一篇关于不同进制之间的转换、比如二进制、八进制、十进制、十六进制等
  17. 4K屏配置keil分辨率和图标大小
  18. CString、CStringA 和 CStringW
  19. AWS KVS(Kinesis Video Streams)之WebRTC移植编译(五)
  20. 【笔记】获取中国电信家庭宽带烽火光猫HG221GS超级管理密码的方法步骤

热门文章

  1. 不用心率表,教你一秒钟知道自己的心率
  2. Android实战技巧之四十七:不用预览拍照与图片缩放剪裁
  3. 计算机专业竞争力度大吗,求职竞争最激烈十大行业出炉 计算机软件业榜首
  4. 某大厂来的水货CTO,写出了新手都不会犯的低级 Bug,被骗300W!就里就不点名了!...
  5. 抖音域名防封,抖音网址免拦截提示,抖音网站防红,域名报毒解决处理生成方法
  6. 百度地图-图标过多卡顿解决方案
  7. cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(结束)
  8. 【Android 】零基础到飞升 | 构建一个可复用的自定义BaseAdapter
  9. 35-文思海辉公司问题-info
  10. Android那些事儿 成长中的Android(1)