实现数组与对象的快速转换
首先我们来看一下正常情况下访问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"}处理完成
评论一下?