数组转换问题

倒吊人
  • 35
const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

entries 将{ 0: 'a', 1: 'b', 2: 'c' };变成[ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

那如何将 [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]变成{ 0: 'a', 1: 'b', 2: 'c' };

回复
阅读 1.4k
4 个回答
✓ 已被采纳
Object.fromEntries()

倒是有这个原生方法支持,是最新的特性的,要chrome 73+ 能运行。所以目前阶段还是自己实现吧
MDN文档

let obj;
[['0','a'],['1','b'],['2','c']].forEach(item=>{
    obj[item[0]] = item[1]
})

js里好像内置没有把二维数组转为object类型的函数,不过可以自己写一个循环搞定。

Array.prototype.arr2obj = function() {
    let obj = {};
    this.forEach(item => {
        obj[item[0]] = item[1]
    });
    return obj;
}

var arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
arr.arr2obj();
[['0', 'a'], ['1', 'b'], ['2', 'c']].reduce((ret, tuple) => ({
    ...ret,
    [tuple[0]]: tuple[1]
}), {})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏