如何在Map.get()中的键上使用字符串方法

时间:2019-01-15 10:19:31

标签: javascript

我创建了一个新的Map,在其中将多个路径设置为true或false。

const pathMap = new Map();
pathMap.set(currentPath, true);  //f.e. pathMap.set('ROOT/FOLDER_1', true);

我正在尝试使用Map.prototype.get()方法检索值,但是我的约束是我不知道完整路径,而只知道路径的最后一部分。我尝试使用字符串方法,但是得到了“ key”或endsWith未定义的错误。

pathMap.get(key.endsWith('FOLDER_1'));
pathMap.get(endsWith('FOLDER_1'));

所以我的问题是,是否可以通过Map.get()来应用键方法来访问密钥,或者是否必须遍历Map?

2 个答案:

答案 0 :(得分:3)

您可以迭代整个Map并过滤其键以所需字符串结尾的所有元素:

for (const [key, value] of pathMap.entries()) {
    if (key.endsWith('FOLDER_1')) {
        console.log(key, value);
        …
    }
}

答案 1 :(得分:0)

您可以获得以给定的最后一部分结尾的所有键。

之后,您可以使用这些键之一获取值。

const keys = Array.from(pathMap.keys()).filter(key => key.endsWith('FOLDER_1'));
let value = pathMap.get(keys[0]);

编辑:正如Bergi所说,Map.keys返回一个迭代器,而不是数组。 这就是为什么我们使用Array.from方法。