ES6 - Object.keys

随着 ES6 的出现,一切都变得美好起来。ES6中内置的 Object.Keys 方法可以快速将对象中的所有键转换为数组。

const numbers = {
  one: 1,
  two: 2
Object.keys(numbers);
// [ 'one', 'two' ]

美好的时光总是短暂的,没过多久,人们就开始抱怨:“哦,我的上帝,为什么我只能将键转换为数组,我想要值”。

ES2017 - Object.values

嗨,我是 ES2017,我可以实现你所有的愿望。通过 ES2017 提供的 Object.values方法,你现在可以轻松的将值提取到数组中。

const numbers = {
  one: 1,
  two: 2
Object.values(numbers);
// [ 1, 2 ]

ES2017 - Object.entries

不仅于此,ES2017还提供了另外一个方法,可以同时将键值提取到数组中。

const numbers = {
  one: 1,
  two: 2
Object.entries(numbers);
// [ ['one', 1], ['two', 2] ]

Object.entries + 解构

Object.entries 提取出来的是一个嵌套数组,我们可以使用解构来获取数组中的值。

const numbers = {
  one: 1
const objectArray = Object.entries(numbers);
objectArray.forEach(([key, value]) => {
  console.log(key); 	// 'one'
  console.log(value); 	// 1

浏览器兼容性

Object.keys 的兼容性较好,重要的是它支持IE。Object.values 和 Object.entries 不支持 IE,但是可以使用 polyfill 来进行支持。

等等,还有...

上面我们已经介绍了如何将对象转化为数组,那么如何将数组转化为对象呢?不用担心,JavaScript 已经提供了一个新方法 Object.fromEntries 可以将数组转化为对象,它的作用与 Object.entries 相反。

const array = [
  [ 'one', 1 ],
  [ 'two', 2 ]
Object.fromEntries(array);
// { one: 1, two: 2 }
js中类数组对象以及类数组转换的方法(ES6, ES5) 类数组(Array-like)对象,通常我们可以把拥有一个length属性和非负整数属性的对象称为类数组对象 JavaScript 数组与一般对象的区别: 当有新元素添加到列表中时,自动更新 length 属性 设置 length 属性值为一个较小值会截断数组 从 Array.prototype 中继承一些有用的方法 类属性为「Array」 注:类数组对象的length不会自动更新 常见的类数组对象有: document.getElements 工作中遇到了一些问题 需要将数组转化为对象 // arr to obj const arr = [{date:"2018-11-18",name:"demo1"},{date:"2018-11-19",name:"demo2"}]; const obj = { "2018-11-18":"demo1", "2018-11-19":"demo2" 只包含使用从0开始的,并且是自然递增的整数作为键,还定义了length用来表示元素个数的对象,通常就认为是类数组对象。 具有:指向对象元素的数字索引下标,以及 length 属性告诉我们对象的元素个数; 不具有:比如像push 、 forEach 以及 indexOf 等数组对象具有的方法; var obj = { 0: 'a', 1: 'b',