【发布时间】:2019-09-14 07:38:55
【问题描述】:
我正在尝试根据一些预定义的逻辑将一些服务器名称存储在地图中。
例如,如果名称是:
"temp-a-name1", "temp-a-name2", "temp-b-name1", "temp-b-name2"
它们将存储在地图中:
{
a: [
"temp-a-name1",
"temp-a-name2"
],
b: [
"temp-b-name1",
"temp-b-name2"
]
}
两个“-”之间的第一个字母永远是键
我对 javascript 不太熟悉,所以我以天真的方式做到了这一点,但我想知道是否有更好、更 JavaScript 的方式来做到这一点。
const servers = ["temp-a-name1", "temp-a-name2", "temp-b-name1", "temp-b-name2"];
let map = {};
let key;
for (const server of servers) {
key = server.charAt(server.indexOf("-") + 1);
if (key in map) {
map[key].push(server);
} else {
map[key] = [server];
}
}
【问题讨论】:
-
坚持你的版本。 IMO 代码可读易懂,无需重构。 BTW,这样的问题更适合codereview.stackexchange.com。
标签: javascript string