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相同”