Object.keys、Object.values、Object.entries详解
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详解相关推荐
- java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...
- Object.keys(obj)与Object.values(obj)的用法
语法 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有枚举属性的字符串数组 传入对象,返回属性名 1 var obj = {'a':'123','b' ...
- for in、for of、forEach、Object.keys(obj)、Object.getOwnPropertyNames(obj)的区别、优缺点和使用场景
先做一个测试题: const arr = [1, 2, 3] arr.name = 'name' // 不要这么做,只是为了测试 Array.prototype.test = function () ...
- Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
多态 public class Hello {public static void main(String[] args) {Animal d = new Dog();Animal c = new C ...
- Object类下面的一些方法详解
1.Object() Object类的构造方法. 2.registerNatives() 为了使JVM发现本机功能,他们被一定的方式命名.例如,对于java.lang.Object.regis ...
- 一文速学(十八)-数据分析之Pandas处理文本数据(str/object)各类操作+代码一文详解(三)
目录 前言 一.子串提取 提取匹配首位子串 提取所有匹配项(extractall)
- java中的values函数_详解java 中valueOf方法实例
case1:Object 对象转String 需要强调的是String.valueOf()方法,当参数为类型是object,且值时null的时候他的处理方式public static String v ...
- python keyboard backspace_selenium键盘按键Keys类及键盘码详解
selenium可以操作鼠标,此外它的Keys()类提供了操作键盘的途径,因为键盘上几乎所有按键都可以用Keys()类实现. 之前我们一直用元素的send_keys()方法输入文字,其实该方法也可以输 ...
- java编程里的values怎么使用,详解Java编程中super关键字的用法
这篇文章主要介绍了Java编程中this与super关键字的用法,包括从内存结构方面分析super的作用域,需要的朋友可以参考下 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程 ...
最新文章
- Qt程序启动画面播放(gif与swf两种动画格式)
- python numpy np.fromstring()函数(从字符串文本中提取数字,返回一维数组)(爬虫提取数字挺好用的)
- VC++中,如何定义callback函数和它的触发事件?
- iOS url出现特殊字符处理 -- stringByAddingPercentEncodingWithAllowedCharacters
- zoj 1006 do the untwist
- 测试工程师听了想打人
- 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
- 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
- python3.7怎么设置字体大小,python字体大小如何设置
- 探访厦航飞机女“医生” 有机务“熊猫”美誉
- C语言学习笔记-各项为正整数的一元二次方程的十字交叉法因式分解
- lambda x:x*x
- 《经济学通识》十一、企业该不该有钱、慈善
- iOS中block的详解weakSelf、strongSelf-转自唐巧
- 直播小程序推出,解锁2018微信直播新玩法
- 一篇关于不同进制之间的转换、比如二进制、八进制、十进制、十六进制等
- 4K屏配置keil分辨率和图标大小
- CString、CStringA 和 CStringW
- AWS KVS(Kinesis Video Streams)之WebRTC移植编译(五)
- 【笔记】获取中国电信家庭宽带烽火光猫HG221GS超级管理密码的方法步骤
热门文章
- 不用心率表,教你一秒钟知道自己的心率
- Android实战技巧之四十七:不用预览拍照与图片缩放剪裁
- 计算机专业竞争力度大吗,求职竞争最激烈十大行业出炉 计算机软件业榜首
- 某大厂来的水货CTO,写出了新手都不会犯的低级 Bug,被骗300W!就里就不点名了!...
- 抖音域名防封,抖音网址免拦截提示,抖音网站防红,域名报毒解决处理生成方法
- 百度地图-图标过多卡顿解决方案
- cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(结束)
- 【Android 】零基础到飞升 | 构建一个可复用的自定义BaseAdapter
- 35-文思海辉公司问题-info
- Android那些事儿 成长中的Android(1)