Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于对象数组验证相同的值_Javascript_Lodash - Fatal编程技术网

Javascript 基于对象数组验证相同的值

Javascript 基于对象数组验证相同的值,javascript,lodash,Javascript,Lodash,如何验证用户没有为两个相反的规则输入相同的值。在本例中,我们可以在名称为Test时阻止用户,但在名称不是Test时阻止用户。目标是显示一条错误消息,告诉用户name\u是和name\u不是不能具有相同的值。我如何才能为此编写验证?我可以用lodash const rules = [ {rule: "name_is", value: "Test"}, {rule: "name_is_not", value: "Test"}, {rule: "surname_is", value: "F

如何验证用户没有为两个相反的规则输入相同的值。在本例中,我们可以在名称为
Test
时阻止用户,但在名称不是
Test
时阻止用户。目标是显示一条错误消息,告诉用户
name\u是
name\u不是
不能具有相同的值。我如何才能为此编写验证?我可以用lodash

const rules = [
  {rule: "name_is", value: "Test"},
  {rule: "name_is_not", value: "Test"},
  {rule: "surname_is", value: "Foo"}
  {rule: "surname_is_not", value: "Bar"},
  {rule: "name_is", value: "Fux"}
];

将它们转换为一个
映射
,对每个键进行迭代检查
key+\u not

const规则=[
{规则:“name_is”,值:“Test”},
{规则:“name_不是”,值:“Test”},
{规则:“姓氏_is”,值:“Foo”},
{规则:“姓氏”为“非”,值为:“Bar”}
]
设m=newmap(rules.Map(x=>[x.rule,x.value]))
for(让m.entries()的[规则,值])
if(m.get(规则+'\u not')==值)

console.log(规则“???”)
将其转换为
映射
,对每个键进行迭代检查
key+\u not

const规则=[
{规则:“name_is”,值:“Test”},
{规则:“name_不是”,值:“Test”},
{规则:“姓氏_is”,值:“Foo”},
{规则:“姓氏”为“非”,值为:“Bar”}
]
设m=newmap(rules.Map(x=>[x.rule,x.value]))
for(让m.entries()的[规则,值])
if(m.get(规则+'\u not')==值)

console.log(规则“???”)
您还可以使用
数组。减少
,每次检查是否有
不存在的键及其值。如果有,您可以在累加器中的
摘要
对象中跟踪它:

const rules=[{rule:“name_是”,value:“Test”},{rule:“姓氏_是”,value:“Foo”},{rule:“姓氏_不是”,value:“Bar”},{rule:“name_不是”,value:“Test”}]
const result=rules.reduce((r,{rule,value})=>{
让键=规则。替换(“”“not”,“”)
r[key]==value?r.summary[rule]=`与${key}`相同:r[rule]=value
返回r
},{摘要:{})。摘要

console.log(result)/“name\u不存在”:“与name\u相同”
您还可以使用
数组。减少
并每次检查是否存在
\u不存在的键及其值。如果有,您可以在累加器中的
摘要
对象中跟踪它:

const rules=[{rule:“name_是”,value:“Test”},{rule:“姓氏_是”,value:“Foo”},{rule:“姓氏_不是”,value:“Bar”},{rule:“name_不是”,value:“Test”}]
const result=rules.reduce((r,{rule,value})=>{
让键=规则。替换(“”“not”,“”)
r[key]==value?r.summary[rule]=`与${key}`相同:r[rule]=value
返回r
},{摘要:{})。摘要
console.log(result)/“name\u不是”:“与name\u相同”