js小技巧之对象和数组相互转化的方法

Object.keys()

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

例如:

let obj = {

name: 'haha',

age: 20,

showName: function () {}

}

Object.keys(obj) //['name','age','showName']

处理数组时,返回数组各元素的索引值:

let arr = ['a', 'b', 'c'];

Object.keys(arr); // ['0', '1', '2']

let brr = [1, 3, 4];

Object.keys(brr); // ['0', '1', '2']

可自动排序:

let arr = { 100: 'a', 2: 'b', 7: 'c' };

console.log(Object.keys(arr)); // console: ['2', '7', '100']

组合用法:

let obj = {

name: 'haha',

age: 20,

}

Object.keys(obj).map((val, index)=>{

  obj[val] // 可以针对obj的不同属性做不同处理

})

Object.values()

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

例如:

let obj = {

name: 'haha',

age: 20,

showName: function () {}

}

Object.values(obj) //['haha','20', f]

let brr = [1, 3, 4];

Object.values(brr); // [1, 3, 4]

排序:

let an_obj = { 100: 'a', 2: 'b', 7: 'c' };

console.log(Object.values(an_obj)); // ['b', 'c', 'a']

字符串:

console.log(Object.values('haha')); // ['h', 'a', 'h', 'a']

Object.entries()

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。

const obj = { foo: 'bar', baz: 42 };

console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

const anObj = { 100: 'a', 2: 'b', 7: 'c' };

console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

非对象会被强制转为对象:

console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

更优雅的遍历对象键值:

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"

}

// 或者

Object.entries(obj).forEach(([key, value]) => {

console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"

});

Object.fromEntries()

Object.fromEntries() 把键值对列表转换为一个对象。改方法为ES10方法, Chrome不支持

const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];

const obj = Object.fromEntries(arr);

console.log(obj); // { 0: "a", 1: "b", 2: "c" }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、新的声明方式 以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种...
    令武阅读 1,130评论 0赞 7
  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,469评论 0赞 3
  • ES6语法跟babel: 一、首先我们来解释一下什么是ES? ES的全称是ECMAScript。1996 11 ,...
    Mooya_阅读 1,185评论 0赞 0
  • 1.join() var arr = [1,2,3]; console.log(arr.join()); // 1...
    _杨柳_阅读 619评论 0赞 0
  • JavaScript之父:Brendan Eich 。 -基本语法:借鉴了C语言和Java语言。-数据结构:借鉴了...
    饥人谷_kule阅读 702评论 0赞 0

友情链接更多精彩内容