判断所有对象属性是否相等



我正在创建布尔值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;
});
};

最新更新