我有一个Typescript Map,ID为键,布尔值为值。我想迭代地图并检查是否至少有一个是真的。我知道有可能使用forEach,但我想在找到第一个之后退出循环。
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"
},
[...]
谢谢,
托拜厄斯
答案 0 :(得分:1)
Map
没有length
属性,这就是编译版本不起作用的原因。您可以尝试this.selectionMap.entries()
,因为它会直接返回条目的Iterable
。
答案 1 :(得分:0)
如果您只想检查是否至少有一个是真的,可以使用
this.selectionMap.filter(i=>i.key == true).length >= 1 ;