嵌套形状验证javascript
嵌套形状验证javascript,javascript,lodash,Javascript,Lodash,我希望valid为false,但它返回true,尽管value.min未定义。这里的问题是什么?问题是第一个条件(o.value)对第二个项目返回true——因为value是一个对象,因此不是falsy——所以对min/max的检查永远不会运行 const x=[ { 价值:1 }, { 价值:{ min:未定义, 最高:2 } } ]; //用于检查空/未定义的实用程序 常数c=v=>v!=无效的 console.log(x.every({value})=>( 值的类型===“对象” ?c(
我希望valid为false,但它返回true,尽管value.min未定义。这里的问题是什么?问题是第一个条件(
o.value
)对第二个项目返回true——因为value
是一个对象,因此不是falsy——所以对min/max的检查永远不会运行
const x=[
{
价值:1
},
{
价值:{
min:未定义,
最高:2
}
}
];
//用于检查空/未定义的实用程序
常数c=v=>v!=无效的
console.log(x.every({value})=>(
值的类型===“对象”
?c(最小值)和c(最大值)
:c(数值)
)));
您应该尝试让您的问题更清楚一点,“验证”在这种情况下的确切含义是什么?如果值也可以接受字符串呢?typeof o.value==='string'?您可以颠倒顺序,检查最小/最大测试的'object',然后检查原语。
import get from "lodash.get";
const x = [
{
value: 1
},
{
value: {
min: undefined,
max: 2
}
}
];
console.log(
"valid: ",
x.every(o => o.value || (get(o, "value.min") && get(o, "value.max")))
);