【发布时间】:2019-08-02 21:17:48
【问题描述】:
如何改进或优化此代码。虽然它给出了所需的结果。我想用更好的方法来写它。
我正在从 www.contentful.com 获取数据,然后对其进行过滤以使用其密钥进行本地化。注意我们必须使用 .reduce() 函数这是一个要求
import * as fs from 'fs';
const client = createClient();
interface IEntry {
id: string;
text: string;
}
interface IEntries {
[key: string]: { [key: string]: string };
}
export async function getLocalization() {
const entries = await client.getEntries<IEntry>({
skip: 0,
limit: 100,
locale: '*',
content_type: 'translation',
});
let enEntries: IEntries = entries.items
.map((e: any) => e.fields)
.reduce(
(ret, entry) => ({
...ret,
[entry.id.fi]: entry.text.en,
}),
{},
);
let fiEntries: IEntries = entries.items
.map((e: any) => e.fields)
.reduce(
(ret, entry) => ({
...ret,
[entry.id.fi]: entry.text.fi,
}),
{},
);
let svEntries: IEntries = entries.items
.map((e: any) => e.fields)
.reduce(
(ret, entry) => ({
...ret,
[entry.id.fi]: entry.text.sv,
}),
{},
);
const translations = {
['en']: { ...enEntries },
['fi']: { ...fiEntries },
['sv']: { ...svEntries },
};
const dir = './data';
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
fs.writeFileSync('data/translations.json', JSON.stringify(translations));
return true;
}
getLocalization();
Output can be found on this link (actual values have been removed): https://imgur.com/k3rzxWx
【问题讨论】:
-
这看起来像是属于Code Review
-
示例输出 JSON 可以在以下链接中找到:imgur.com/k3rzxWx
-
哦,我从来不知道有这样的事情:D 感谢您通知我。
标签: javascript typescript logic