javascript - 使用javascript比较多个对象
问题描述
我有一个对象数组(多个对象),并希望将它们与动态添加的对象进行比较。
目前我的代码看起来像
public compare(row) {
for (var i = 0; i < row.length; i++) {
var a = row[i];
console.log(a, 'first array !!!!!!!');
var b = row[i + 1];
console.log(b, 'Second array !!!!!!!');
if (a != undefined && b != undefined) {
return JSON.stringify(a) === JSON.stringify(b);
}
else {
return false;
}
}
}
但我只能比较前两条记录。有没有办法使用javascript动态比较对象。提前致谢...
解决方案
您的循环总是在第一个循环结束时返回。如果发现不匹配,您只想在循环内返回 false,否则让循环继续。如果它没有发现任何不匹配,那么你知道你的对象匹配,你可以返回 true。
public compare(row) {
for (var i = 0; i < row.length - 1; i++) {
var a = row[i];
var b = row[i + 1];
if (!a || !b) {
continue;
}
if (JSON.stringify(a) !== JSON.stringify(b)) {
return false;
}
}
return true;
}
我还将循环设置为仅继续 while i < row.length - 1
,因为row[row.length]
.
演示
var equal = [
{ a: 1 },
undefined,
{ a: 1 },
{ a: 1 }
];
var notEqual = [
{ a: 1 },
undefined,
{ a: 1 },
{ a: 1 },
{ a: 2 }
];
function compare(row) {
for (var i = 0; i < row.length - 1; i++) {
var a = row[i];
var b = row[i + 1];
if (!a || !b) {
continue;
}
if (JSON.stringify(a) !== JSON.stringify(b)) {
return false;
}
}
return true;
}
console.log('should be true: ', compare(equal));
console.log('should be false: ', compare(notEqual));
推荐阅读
- android - 使用 FragmentContainerView 和 NavHostFragment 时出错
- javascript - 粘性菜单,向下滚动时隐藏粘性菜单
- php - preg_match() 期望参数 2 是字符串,给定对象
- javascript - 如果已经是另一个跟踪器,如何创建新的 GA 跟踪器
- c++ - C++ grpc 客户端到 Nginx ssl
- neo4j - Neo4j 不执行无向关系
- javascript - 使用java脚本中的id从对象数组中获取特定值
- java - JDBC:呈现丹麦语特定字符的问题:Ø、Å、Æ
- c# - 有没有办法将 Stream.Read() 转换为 int?
- python - 如何在不使用 Python 中的任何模块的情况下将 ISO 8601 更改为正常的日期时间?