Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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_Foreach - Fatal编程技术网

Javascript-如何查找循环中的不匹配?

Javascript-如何查找循环中的不匹配?,javascript,foreach,Javascript,Foreach,我想找出用户输入是否与现有数据不匹配,然后采取措施: var reset = false; var user = [ { public_name: 'e', code_name: 'f' }, { public_name: 'c', code_name: 'not match' }, { public_name: 'a', code_name: 'b' } ]; var server = [ {"code_name":"b","public_name":"a"},

我想找出用户输入是否与现有数据不匹配,然后采取措施:

var reset = false;    
var user = [ 
  { public_name: 'e', code_name: 'f' },
  { public_name: 'c', code_name: 'not match' },
  { public_name: 'a', code_name: 'b' } 
];

var server = [
   {"code_name":"b","public_name":"a"},
   {"code_name":"d","public_name":"c"},
   {"code_name":"f","public_name":"e"}
]

user.forEach(function(field, index) {
   var matchingSpecies = server.find(function(item) {
       if (item.code_name === field.code_name 
           && item.public_name === field.public_name) {
           // matched so do nothing
       } else {
           // not match and stop looping
           reset = true;
       }
    });
});

console.log(reset);
但我得到的结果总是
true
,即使存在匹配项


有什么想法吗

您可以这样修改代码:

var reset = false;    
var user = [ 
  { public_name: 'e', code_name: 'f' },
  { public_name: 'c', code_name: 'not match' },
  { public_name: 'a', code_name: 'b' } 
];

var server = [
   {"code_name":"b","public_name":"a"},
   {"code_name":"d","public_name":"c"},
   {"code_name":"f","public_name":"e"}
]

user.forEach(function(field, index) {
   var match = false;
   server.find(function(item) {
       if (item.code_name === field.code_name 
           && item.public_name === field.public_name) {
           match = true;
       }
    });
    reset = reset || ! match;
});

console.log(reset);

您可以这样修改代码:

var reset = false;    
var user = [ 
  { public_name: 'e', code_name: 'f' },
  { public_name: 'c', code_name: 'not match' },
  { public_name: 'a', code_name: 'b' } 
];

var server = [
   {"code_name":"b","public_name":"a"},
   {"code_name":"d","public_name":"c"},
   {"code_name":"f","public_name":"e"}
]

user.forEach(function(field, index) {
   var match = false;
   server.find(function(item) {
       if (item.code_name === field.code_name 
           && item.public_name === field.public_name) {
           match = true;
       }
    });
    reset = reset || ! match;
});

console.log(reset);

您可以尝试以下方法:

var reset = false;    
var user = [ 
  { public_name: 'e', code_name: 'f' },
  { public_name: 'c', code_name: 'not match' },
  { public_name: 'a', code_name: 'b' } 
];

var server = [
   {"code_name":"b","public_name":"a"},
   {"code_name":"d","public_name":"c"},
   {"code_name":"f","public_name":"e"}
]

user.forEach(function(field, index) {
   var match = false;
   server.find(function(item) {
       if (item.code_name === field.code_name 
           && item.public_name === field.public_name) {
           match = true;
       }
    });
    reset = reset || ! match;
});

console.log(reset);
注意:我已经复制了原始的
用户
,并将其更新为与
服务器
匹配以显示这两种状态

函数查找匹配(数组){
var _reset=false;
forEach(函数(字段、索引){
var matchingSpecies=server.find(函数(项){
返回item.code\u name!==field.code\u name&&item.public\u name===field.public\u name
});
_重置=matchingSpecies&&Object.getOwnPropertyNames(matchingSpecies)。长度>0 | | |重置
});
返回复位;
}
var user=[{public_name:“e”,code_name:“f”},{public_name:“c”,code_name:“不匹配”},{public_name:“a”,code_name:“b”}],
user1=[{public_name:“e”,code_name:“f”},{public_name:“c”,code_name:“d”},{public_name:“a”,code_name:“b”}],
服务器=[{code_name:“b”,public_name:“a”},{code_name:“d”,public_name:“c”},{code_name:“f”,public_name:“e”}];
日志(findMatching(用户));

log(findMatching(user1))您可以尝试以下方法:

var reset = false;    
var user = [ 
  { public_name: 'e', code_name: 'f' },
  { public_name: 'c', code_name: 'not match' },
  { public_name: 'a', code_name: 'b' } 
];

var server = [
   {"code_name":"b","public_name":"a"},
   {"code_name":"d","public_name":"c"},
   {"code_name":"f","public_name":"e"}
]

user.forEach(function(field, index) {
   var match = false;
   server.find(function(item) {
       if (item.code_name === field.code_name 
           && item.public_name === field.public_name) {
           match = true;
       }
    });
    reset = reset || ! match;
});

console.log(reset);
注意:我已经复制了原始的
用户
,并将其更新为与
服务器
匹配以显示这两种状态

函数查找匹配(数组){
var _reset=false;
forEach(函数(字段、索引){
var matchingSpecies=server.find(函数(项){
返回item.code\u name!==field.code\u name&&item.public\u name===field.public\u name
});
_重置=matchingSpecies&&Object.getOwnPropertyNames(matchingSpecies)。长度>0 | | |重置
});
返回复位;
}
var user=[{public_name:“e”,code_name:“f”},{public_name:“c”,code_name:“不匹配”},{public_name:“a”,code_name:“b”}],
user1=[{public_name:“e”,code_name:“f”},{public_name:“c”,code_name:“d”},{public_name:“a”,code_name:“b”}],
服务器=[{code_name:“b”,public_name:“a”},{code_name:“d”,public_name:“c”},{code_name:“f”,public_name:“e”}];
日志(findMatching(用户));

log(findMatching(user1))这可能是因为,您正在迭代
user
数组中的所有元素。因此,即使其中任何一个不匹配,
reset
设置为
true
。为什么不尝试筛选不匹配的,并检查是否存在。如果是,那么您会将true指定为reset?@n0m4d如何使用过滤器?这可能是因为您正在迭代
user
数组中的所有元素。因此,即使其中任何一个不匹配,
reset
设置为
true
。为什么不尝试筛选不匹配的,并检查是否存在。如果是,则您将“真”指定为“重置”@n0m4d如何使用过滤器?谢谢。但是用户有时有这样的
{public_name:'c',code_name:'notmatch'},
Update
reset=reset | |!匹配到<代码>重置=!匹配| |重置@teelou当项目具有“不匹配”时,应将其赋值为true以重置?@n0m4d yes。当出现不匹配时,则重置。@teelou似乎我的代码在出现
“不匹配”
codename时仍然有效。谢谢。但是用户有时有这样的
{public_name:'c',code_name:'notmatch'},
Update
reset=reset | |!匹配到<代码>重置=!匹配| |重置@teelou当项目具有“不匹配”时,应将其赋值为true以重置?@n0m4d yes。当出现不匹配时,则重置。@teelou似乎我的代码在出现
“不匹配”
代码名时仍然有效。