我有一个接受“成绩”的数组(称为 acceptedGrades
)。我的 json
返回每个人的成绩。该成绩必须在 acceptedGrades
数组中才能返回 true,否则返回 false。示例:
acceptedGrades = ['A1','A2','A3','B1','B2','B3','C1','C2','C3'];
for "A1" returns true;
for "Z1" returns false;
下一段代码会查找它来决定它是真还是假。
data.map((item) => {
this.state.isValidGrade = acceptedGrades.includes(item.grade.toUpperCase());
});
现在,问题是我想知道是所有项目都返回 true 还是有人返回 false,例如
0:grade: 'B1' //true
1:grade: 'C2' //true
2:grade: 'A3' //true
// All return TRUE so expected result should be TRUE
0:grade: 'B11' //false
1:grade: 'C2' //true
2:grade: 'A3' //true
// Not All return TRUE so the expected result should be FALSE
我可能会以错误的方式解决这个问题,并且相信有一种更简单的方法可以将所有成绩值作为一个集合来查看 acceptedGrades
数组,而不是查看每个人 - 任何建议或答案?
最佳答案
您可以将逻辑包装在一个方法中,并实际检查您是否可以找到未包含在有效成绩集中的 grade
,如果您发现某些项目验证此条件,您就会知道整个项目数组将无效:
const acceptedGrades = ['A1','A2','A3','B1','B2','B3','C1','C2','C3'];
// Data examples.
const data1 = [
{name: "Josh", grade: "B1"},
{name: "Lucas", grade: "C2"},
{name: "Damian", grade: "A3"}
];
const data2 = [
{name: "Josh", grade: "B11"},
{name: "Lucas", grade: "C2"},
{name: "Damian", grade: "A3"}
];
// Method that return if a set of grades is valid or not.
const isValidGrade = (data) =>
{
return !data.find(({grade}) => !acceptedGrades.includes(grade.toUpperCase()));
};
console.log(isValidGrade(data1));
console.log(isValidGrade(data2));
但是,如果你使用every()
会更清楚:
const isValidGrade = (data) =>
{
return data.every(({grade}) => acceptedGrades.includes(grade.toUpperCase()));
};
关于javascript - 为映射的 true 或 false 值的集合返回 true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281689/