如何在一个特定对象中转换对象数组?

Max*_*fen 3 javascript arrays recursion

所以,在我上次的采访中,我有一个非常小的但很难完成的任务.我只是想知道如何解决它.我认为我们需要在这个任务中实现递归,但我不清楚它.

任务:

let arr = [{name: 'width', value: 300}, {name: 'height', value: 100}];
Run Code Online (Sandbox Code Playgroud)

在输出时我们必须:

let obj = {width:300, height: 100};
Run Code Online (Sandbox Code Playgroud)

数组对象的数量可以是无穷大.

PS如果您向我提供有关如何完成此任务的知识链接,我将很高兴.

谢谢.

Ele*_*Ele 5

使用该功能的替代方案 reduce

简要说明

  • 该函数Array.prototype.reduce循环一个数组,为每个对象应用一个处理程序.
  • 累加器a将包含每次迭代的结果.
  • 该函数converter接收累加器和当前对象.
  • Object.assign(a, {[name]: value})会为当前累加器分配一个新属性.
  • {[name]: value}代码将按以下方式构建对象的计算属性名称:
{ width: 300 }

let arr = [{name: 'width', value: 300},{name: 'height', value: 100}],
    converter = (a, {name, value}) => (Object.assign(a, {[name]: value})),
    obj = arr.reduce(converter, {});

console.log(obj);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>
Run Code Online (Sandbox Code Playgroud)