实现数组与对象的快速转换
首先我们来看一下正常情况下访问bar值
arr = [['bar',3],['two',6]]
// 正常访问 bar
console.log(arr[0][0]) // bar
使用新的API访问bar值 Object.fromEntries()
// ES10新的API Object.fromEntries()
const obj = Object.fromEntries(arr)
console.log(obj.bar) // 3
小实例
这个时候我们有一个object类型的数据,我们需要去除key的长度不等于3的元素。我们该怎么样做呢
const obj = {
abc: '1',
bcd: '2',
fjdkls: '3',
}
思路:我们已知数组的API要远远多于object的API,那么我们可以现将obj转为array
const arr = Object.entries(obj)
console.log(arr)
// (3) [Array(2), Array(2), Array(2)]
// 0: (2) ["abc", "1"]
// 1: (2) ["bcd", "2"]
// 2: (2) ["fjdkls", "3"]
// length: 3
// __proto__: Array(0)
这里我使用了Object.entries()将对象转为了数组
这下就可以直接使用filter进行对数组的过滤了
const res = arr.filter(([k,v]) => {
return k.length === 3;
})
console.log(res)
// (2) [Array(2), Array(2)]
// 0: (2) ["abc", "1"]
// 1: (2) ["bcd", "2"]
// length: 2
// __proto__: Array(0)
过滤完后我们得到了我们想要的结果,但这还不是最终的结果。因为它现在是数组。我们要将它变为对象
const res_obj = Object.fromEntries(res)
console.log(res_obj)
// {abc: "1", bcd: "2"}
处理完成