我正在创建布尔值hasMultipleCoverageLines
,以确定coverageLines
内的项目是否存在不同的coverageLineName
值。有没有一种方法可以简化这个表达式,这样我就不必显式地检查每个coverageLineName
了?
this.hasMultipleCoverageLines = !this.coverageLines.every((x) => x.coverageLineName === "Medical")
&& !this.coverageLines.every((x) => x.coverageLineName === "Dental")
&& !this.coverageLines.every((x) => x.coverageLineName === "Vision")
&& !this.coverageLines.every((x) => x.coverageLineName === "Life");
集合将强制惟一性。把名字放在一个集合里,看看计数是否>1 .
let names = this.coverageLines.map(x => x.coverageLineName);
let set = new Set(names);
this.hasMultipleCoverageLines = set.size > 1;
这样["Dental", "Dental", "Dental"]
将生成大小为1的集合,但["Dental", "Vision", "Dental"]
将生成大小为2的集合,以此类推…
您可以检查是否有任何一行与前一行不同。
const hasMultipleCoverageLines = (lines) => {
return lines.some((line, i) => {
return i > 0 && line.coverageLineName !== lines[i - 1].coverageLineName;
});
};