Sec*_*Son 3 javascript arrays validation filter typescript
给定一个包含一些状态字符串的数组,我想验证该数组是否至少包含一个sleeping
状态,然后验证其余状态是否为ok
或sleeping
。
所以一个有效的数组是['ok', 'sleeping', 'sleeping', 'ok']
,一个无效的数组将类似于const states = ['ready', 'working','onBreak','sleeping', 'ok', 'sleeping']
到目前为止我想出的是:
const validArray = ['ok', 'sleeping', 'sleeping', 'ok'];
const isvalid = validArray.some( x => x === 'sleeping')
if(isValid){
const canDoStuff = validArray.some( x => !['ok','sleeping'].includes(x))
if(canDoStuff){
doStuff()
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在一个循环中验证它,而不是两个循环。
与其.some
检查是否有一项sleeping
,不如使用.includes
.
但是,你的另一个.some
也没有实现正确的逻辑;doStuff
仅当至少有一项不匹配时才会运行。.every
改为使用,并检查每个是否匹配:
const validate = input => (
input.includes('sleeping') &&
input.every(x => ['ok', 'sleeping'].includes(x))
);
console.log(validate(['ok', 'sleeping', 'sleeping', 'ok']));
console.log(validate(['ready', 'working','onBreak','sleeping', 'ok', 'sleeping']));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65 次 |
最近记录: |