gpt4 book ai didi

javascript - 验证 Javascript 函数返回的内容

转载 作者:行者123 更新时间:2023-12-01 00:29:31 24 4
gpt4 key购买 nike

我试图弄清楚这个函数返回的是什么。目前正在逐行分解它。

function a(arg) {
return arg.replace(/^\?/, ")
.split('&')
.map(p => {
const [k,v] = p.split('=');
return { [k]: v };
})
.reduce((o, item) => ({ ...o, ...item}), {});
}
  1. 所以看起来在 arg 中,全都是“?”正在被替换为引号。
  2. 然后 arg 在“&”处被分割。

这就是事情变得模糊的地方。 args 中的每个字符是否在每个“=”处都被放置在一个新数组中,其中 k 是数组的键?此外,我不太确定 .reduce 函数中累积了什么。

感谢您在改善我的 JS 之旅方面提供的任何帮助。谢谢

最佳答案

该函数期望 & 之间的每个子字符串在 = 符号左侧和右侧都有一个值,例如:

foo=fooVal&bar=barVal&baz=bazVal
// ^ ^ ^

分割后,.map的作用是将=左边的值作为对象内的键,并将值放在= 的右侧作为该键的值,例如

foo=fooVal&bar=barVal&baz=bazVal

变成了

[
{ foo: 'fooVal' },
{ bar: 'barVal' },
{ baz: 'bazVal' },
]

然后 .reduce 将这些对象合并为一个:

{
foo: 'fooVal',
bar: 'barVal',
baz: 'bazVal',
}

如果没有 .map.reduce 可能会更容易理解:

function a(arg) {
const obj = {};
for (const substr of arg.replace(/^\?/, '').split('&')) {
const [key, val] = substr.split('=');
obj[key] = val;
}
return obj;
}

console.log(a('?foo=fooVal&bar=barVal&baz=bazVal'));

关于javascript - 验证 Javascript 函数返回的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686951/

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