猿问

嵌套形状验证javascript

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")))

);

https://codesandbox.io/s/modest-dijkstra-g42yy


我希望有效为假,但它返回真,尽管 value.min 未定义。这里有什么问题?


浮云间
浏览 121回答 1
1回答

jeck猫

问题是您的第一个条件 ( o.value) 为第二个项目返回valuetrue——因为它是一个对象,因此不是假的——所以你对 min/max 的检查永远不会运行。const x = [  {    value: 1  },  {    value: {      min: undefined,      max: 2    }  }];// utility to check for null/undefinedconst c = v => v != null;console.log(x.every(({ value }) => (  typeof value === 'object'? c(value.min) && c(value.max): c(value))));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答