我想查找用户输入与现有数据是否不匹配,然后执行某些操作:
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
。
有什么想法吗?
最佳答案
你可以尝试这样的事情:
注意:我制作了原始用户
的副本,并将其更新为匹配服务器
以显示两种状态。
function findMatching(array) {
var _reset = false;
array.forEach(function(field, index) {
var matchingSpecies = server.find(function(item) {
return item.code_name !== field.code_name && item.public_name === field.public_name
});
_reset = matchingSpecies && Object.getOwnPropertyNames(matchingSpecies).length>0 || _reset
});
return _reset;
}
var user=[{public_name:"e",code_name:"f"},{public_name:"c",code_name:"not matched"},{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"}],
server=[{code_name:"b",public_name:"a"},{code_name:"d",public_name:"c"},{code_name:"f",public_name:"e"}];
console.log(findMatching(user));
console.log(findMatching(user1));
关于Javascript - 如何在循环中查找不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38568075/