[英]Iterating over map with typescript does not work
我有一个 Typescript Map,其中 ID 作为键,布尔值作为值。 我想遍历地图并检查是否至少有一个是真的。 我知道 forEach 是可能的,但我想在找到第一个后退出循环。
这是我的编码(根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of#Iterating_over_a_Map ):
private isOneSelected(): boolean {
for (let [key, value] of this.selectionMap) {
if (value) {
return true;
}
}
return false;
}
但它根本没有进入循环。 编译后的js文件如下所示:
SelectionController.prototype.isOneSelected = function () {
for (var _i = 0, _a = this.selectionMap; _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
if (value) {
return true;
}
}
return false;
};
我正在针对 ES6 进行编译,并且正在使用 es6-shim 类型:tsconfig 文件:
[...]
"compilerOptions": {
"sourceMap": true,
"rootDir": "./client",
"outDir": ".tmp/client",
"target": "ES6",
"module": "commonjs"
},
[...]
谢谢,
托比亚斯
Map
没有length
属性,这就是编译版本不起作用的原因。 您可以尝试this.selectionMap.entries()
因为它直接返回条目的Iterable
。
如果你只想检查是否至少有一个是真的,你可以使用
this.selectionMap.filter(i=>i.key == true).length >= 1 ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.