gpt4 book ai didi

javascript - 对 .reduce() 方法和 Object.assign() 的上下文的解释

转载 作者:行者123 更新时间:2023-11-27 22:48:13 27 4
gpt4 key购买 nike

基于引用 MDN 上的方法/对象定义,我试图构建一个外行人的逐步解释,说明以下脚本( from the previous post )如何帮助我理解它(希望这样我可以适应它)进一步)

有一些事情我不明白,所以我的尝试可能看起来有点困惑,但希望有人能把我放在我偏离轨道/困惑的地方......

(注意,encode 函数只是对 html 进行编码,需要从 node.js 包中获取)

var arr = {
"a": "Some strings of text",
"b": "to be encoded",
"c": "& converted back to a json file",
"d": "once they're encoded"
}

var encodedValues = Object.keys(arr).reduce(function(out,key) {
return Object.assign(out, {[key]: endcode(arr[key])})
}, {});

console.log(encodedValues);

说明

创建一个变量“encodedValues”,它将:

1 Object.keys(arr)

按照提供的顺序循环并返回对象arr的属性

2 .reduce(function(out,key)

首先应用以下函数对数组中的每个值执行(“并将其减少为单个值”*):

3 return Object.assign(out, {[key]: endcode(arr[key])})

该函数将所有属性的值从源对象复制到我们称为“out”的目标对象。

4 源对象应用了一个编码函数 {[key]:encode(arr[key])} ,因此其中 key 是一个对象 encode 应用于其属性

5 }, {});

我假设这部分 , {} 是 .reduce 的初始值,即用作回调第一次调用的第一个参数的值,该值以空对象开始?

6Object.keys 返回一个数组(给定对象 arr 的编码属性按照提供的顺序排列)

7 然后记录到控制台

*我不明白我们如何或为何 "reduce it to a single value “在这种情况下??这是否表明值的串联是该过程的一部分:“一些文本字符串”+“要编码”+“并转换回 json 文件”+“编码后”。我真的不明白这是如何或为什么这是工作解决方案的一部分

谢谢!

最佳答案

reduce() 的作用是循环数组,为每个项目调用您的函数,并且每次,它都会将上一次迭代的返回值传递给您的函数,以便您可以“构建” “它。

例如,您可以使用 reduce() 来对数字数组进行总计。迭代器函数将获取运行总计,添加到其中,然后返回新的总计。或者,您可以使用它来连接一堆字符串,其中迭代器接受现有字符串,在其上连接一些内容,然后返回新字符串。

在这种情况下,您只需接收一个对象(名为 out 的参数),对其进行操作,然后返回它,以便下一次迭代可以继续处理它。当reduce()遍历所有键时,它将返回您一直在构建的对象。这将进入您的 encodedValues 变量。

关于javascript - 对 .reduce() 方法和 Object.assign() 的上下文的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38255235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com