这是应用程序的状态。如果状态中存在非零、非空和非空数组,Validate函数应返回true。。。
const [state, setState] = useState({
priceType: 0,
recurrenceType: 0,
start_date: '',
end_date: '',
minCapacity: 0,
maxCapacity: 0,
price: 0,
min: 0,
max: 0,
days: []
});
,我正在尝试这种方式,但没有给出正确的结果
const validate=Object.values(state).every((item)=>(item===0 && item==='' && item===[]))
任何建议。。。。
提前感谢
标准等式(==
或===
(不适用于对象(和数组(:
console.log([] === []) // false
console.log({} === {}) // false
此外,您不能使用&&
,因为在逻辑上和通常情况下,item
不可能同时是0
、空字符串和空数组(有一些技巧可以做到这一点,但它们不适合这个问题(。
为了确保没有空值,请使用Array.some()
检查它是否至少有一个为空,并否定结果。要确保全部为空,请使用Array.every()
。
要检查数组是否为空,请检查它的length
不是0
(这也适用于字符串(。所以你可以只检查长度,如果返回未定义,检查它是否是0
:
const state = {
priceType: 0,
recurrenceType: 0,
start_date: '',
end_date: '',
minCapacity: 0,
maxCapacity: 0,
price: 0,
min: 0,
max: 0,
days: []
};
const validate = !Object.values(state)
.some(item => item === 0 || item.length === 0);
console.log(validate);