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'},
Updatereset=reset | |!匹配代码>到<代码>重置=!匹配| |重置代码>@teelou当项目具有“不匹配”时,应将其赋值为true以重置?@n0m4d yes。当出现不匹配时,则重置。@teelou似乎我的代码在出现“不匹配”
codename时仍然有效。谢谢。但是用户有时有这样的{public_name:'c',code_name:'notmatch'},
Updatereset=reset | |!匹配代码>到<代码>重置=!匹配| |重置代码>@teelou当项目具有“不匹配”时,应将其赋值为true以重置?@n0m4d yes。当出现不匹配时,则重置。@teelou似乎我的代码在出现“不匹配”
代码名时仍然有效。