Javascript 将二维数组转换为对象的好方法

Javascript 将二维数组转换为对象的好方法,javascript,ecmascript-2017,Javascript,Ecmascript 2017,使用ES7 ES8,我可以将一个对象转换为数组,如下所示: let obj = { a: '1', b: '2', c: '3' } let arr = Object.entries(obj) // [ [ 'a', '1' ], [ 'b', '2' ], [ 'c', '3' ] ] arr.reduce((o, [k, v])=>Object.assign(o, {[k]: v}), {}) 但是如果我想走另一条路呢?我可以使用for循环,或者像下面这样的数组的reduce方法,

使用ES7 ES8,我可以将一个对象转换为数组,如下所示:

let obj = { a: '1', b: '2', c: '3' }
let arr = Object.entries(obj)
// [ [ 'a', '1' ], [ 'b', '2' ], [ 'c', '3' ] ]
arr.reduce((o, [k, v])=>Object.assign(o, {[k]: v}), {})
但是如果我想走另一条路呢?我可以使用for循环,或者像下面这样的数组的reduce方法,但是有更直接的方法吗

let arr =[ [ 'a', '1' ], [ 'b', '2' ], [ 'c', '3' ] ]
let obj = arr.reduce((o, x)=>{o[x[0]]=x[1];return o}, {})
// { a: '1', b: '2', c: '3' }
一个用例:我想把像
“A=1;b=2;c=3”这样的字符串转换成像
{A:'1',b:'2',c:'3'}
这样的对象,结果是

"a=1;b=2;c=3"
  .split(";")
  .reduce((o, x)=>{
    let parts=x.split("=")
    o[parts[0]]=parts[1]
    return o
  }, {});

编辑:正如评论中指出的,reduce语法可以简化(或至少缩短)为:

…或使用
对象写入。按如下方式分配

let obj = { a: '1', b: '2', c: '3' }
let arr = Object.entries(obj)
// [ [ 'a', '1' ], [ 'b', '2' ], [ 'c', '3' ] ]
arr.reduce((o, [k, v])=>Object.assign(o, {[k]: v}), {})
不管怎样,根据评论,这个问题的答案是否定的。这是我们最好的方法。

您想要一些单行
函数吗

const detries=entries=>entries.reduce((结果,[key,value])=>Object.assign(结果,{[key]:value}),{});
const entries=Object.entries({a:1,b:2,c:3});
损害常数=损害(条目);
控制台信息(“条目”,条目);

console.info(“损坏的”,损坏的)
您可以缩短/简化回调到
(o[k,v])=>Object.assign(o,{[k]:v})
,但除此之外,没有比ES2017更好的了,不是ES7。它要么像Bergi解释的那样,要么就是
.reduce((o[k,v])=>(o[k]=v,o),{})
(更快,但有逗号的味道)。@estus谢谢,我会更新这个问题。一般来说,这就是实用程序库的用途(例如lodash的),我已经更新了正确的标记。Object.entries属于ES2017。ES7和ES8是不推荐使用的口语术语,此类规范不存在。