我有一个reduce
函数,用于将对象键和值减少并格式化为key1=value1nkey2=value2
格式的字符串,但它正在丢失第一个元素:
样本数据
{
"key1": "value1",
"key2": "value2"
}
private toMt5Set(data: any): string {
const object = JSON.parse(data);
return Object.keys(object || {})
.reduce((acc, key) => acc + `${key}=${object[key]}n`);
}
如果可以的话,我想推荐一个小的风格改进。
您的reduce
函数(添加了"初始值设定项(:
.reduce((acc, key) => acc + `${key}=${object[key]}n`, '');
正在访问在reduce
的范围之外定义的object
。这些"函数外"引用比"函数内"引用更难推理。
您可以通过将对Object.keys()
(返回key
(的调用替换为Object.entries()
(返回key, value
(来避免这种"函数外"问题。
"所有在范围内"的版本看起来是这样的:
Object.entries(object || {})
.reduce((acc, [key, val]) => acc + `${key}=${val}n`, '');
这是一个小的更改,但它使代码更容易理解。
尝试添加acc 的初始值
Object.keys(object || {}) .reduce((acc, key) => `${acc}${key}=${object[key]}n`, '');
输出
key1=value1nkey2=value2n