前言
我们在日常的工作中会遇到数组转为对象,或者对象转为数组的情况。如果不用一些特别的方法,我们会写很多冗余的代码,就像我同事跟我说,如果按照代码量来算KPI的话,你的KPI算是全公司第一了。
数组转对象
ES6的展开运算符
const arr = ['jack', 'rose', '1314'];
const obj = { ...arr };
console.log(obj);
Objcet.assign(target, ...sources)
const arr = ['jack', 'rose', '1314'];
const obj = Object.assign({}, arr);
console.log(obj);
Object.fromEntries(iterable)
把键值对转换为一个对象。
const arr = [['jack', 1], ['rose', 2], ['1314', 3]];
const obj = Object.fromEntries(arr);
console.log(obj); //{1314: 3, jack: 1, rose: 2}
forEach
const arr = ["jack", "rose", 3, 4, 5];
let obj = {};
arr.forEach((item, index) => {
obj[index] = item;
})
console.log(obj); //{0: 'jack', 1: 'rose', 2: 3, 3: 4, 4: 5}
对象转数组
Object.entries(obj)
把一个键值对转换为数组。
const obj = { "jack": 1, "rose": 2, c: 3 };
const arr = Object.entries(obj);
console.log(arr);
Object.keys(obj)
由给定的对象自身可枚举的属性组成的数组
const obj = { "jack": 1, "rose": 2, c: 3 };
const arr = Object.keys(obj).map(item => [item, obj[item]]);
console.log(arr);
总结
以上就是数组和对象之间的相互转化问题的解决方案,我们要学会在合适的场景中,选择最适用的方法,使我们的代码量最少,而且效率最高。