我有一个 reduce
用于将对象的键和值以格式化的方式还原和格式化为字符串的函数。key1=value1\nkey2=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`);
}
尝试添加acc的初始值
Object.keys(object || {}) .reduce((acc, key) => `${acc}${key}=${object[key]}\n`, '');
产量
key1=value1\nkey2=value2\n
如果可以的话,我想推荐一个小小的风格改进。
你的 reduce
函数(添加了''初始化器)。
.reduce((acc, key) => acc + `${key}=${object[key]}\n`, '');
正在访问 object
的范围之外的定义。reduce
. 这些 "函数外 "的引用比 "函数内 "的引用更难推理。
你可以通过将你对 Object.keys()
(返回 key
)与 Object.entries()
(返回 key, value
).
所有范围内 "的版本是这样的。
Object.entries(object || {})
.reduce((acc, [key, val]) => acc + `${key}=${val}\n`, '');
这是个小改动,但它让代码更容易理解。 It's a small change, but it makes the code a bit easier to understand.