使用Jquery比较Javascript中的两个列表/表
Comparing 2 lists/Tables in Javascript using Jquery
我有两个表,比如表1和表2。
表1有2列:
Col B | Col C
row 11 | row 12
row 21 | row 22
row 31 | row 32
表2还有2列:
Col B | Col C
row 21 | row 22
row 21 | row 01
row 11 | row 12
我想将表1与表2进行比较,并做一些事情;比较两个表,并确保表1中所有缺失的值都以相同的顺序添加到表2中。
预期结果
Col B | Col C
row 11 | row 12
row 21 | row 22
row 31 | row 32
row 21 | row 01
我尝试在两个表上使用foreach循环实现,假设表来自JSON结构,但我不确定我做得是否正确。实现上述结果的最佳方式是什么?感谢
样品清单:
{
"defaultValue": [{
"CellValues": [{
"defaultValue": "row 11"
}, {
"defaultValue": "row 12"
}]
}, {
"CellValues": [{
"defaultValue": "row 21"
}, {
"defaultValue": "row 22"
}]
},{
"CellValues": [{
"defaultValue": "row 31"
}, {
"defaultValue": "row 32"
}]
}]
}
$.each(Table1, function (Table1RowIndex, Table1Rowvalue) {
$.each(Table1Rowvalue.cells)(), function (Table1CellIndex, Table1Cellvalue) {
$.each(Table2, function (Table2rowIndex, Table2row) {
$.each(Table2.cells(), function (Table2cellIndex, Table2cell) {
//
}
});
});
});
});
我认为您想要做3个嵌套循环,而不是4个。您对行执行了适当的嵌套循环,但当您循环表1的列时,您只需使用索引从表2中获得相应的列。
复制其中一个表作为输出也是一个好主意。。。更改正在循环的数组可能会导致问题。
$(document).ready(function() {
var t1 = {
"defaultValue": [
{"CellValues": [
{ "defaultValue": "row 11" },
{ "defaultValue": "row 12" }]
}, {"CellValues": [
{ "defaultValue": "row 21" },
{ "defaultValue": "row 22" }]
}, { "CellValues": [
{ "defaultValue": "row 31" },
{ "defaultValue": "row 32" }]
}
]
};
var t2 = {
"defaultValue": [
{"CellValues": [
{ "defaultValue": "row 21" },
{ "defaultValue": "row 22" }]
}, {"CellValues": [
{ "defaultValue": "row 21" },
{ "defaultValue": "row 01" }]
}, { "CellValues": [
{ "defaultValue": "row 11" },
{ "defaultValue": "row 12" }]
}
]
};
var out = JSON.parse(JSON.stringify(t1)); // clone t1 to use as output
$.each(t2.defaultValue, function(i2, r2) {
var rowMatch = false;
$.each(t1.defaultValue, function(i1, r1) {
var cellMatch = true;
$.each(r1.CellValues, function(j, c1) {
var c2 = r2.CellValues[j];
if(c1.defaultValue!=c2.defaultValue) {
cellMatch = false;
return false;
}
});
if(cellMatch) {
rowMatch = true;
return false;
}
});
if(!rowMatch) {
// r1 does not exist in t2, so we need to add it
out.defaultValue.push(r2);
}
});
log(JSON.stringify(out));
});
function log() {
var s = '';
$.each(arguments, function() {
s += " " + this;
});
$('#out').append(s+"<br>");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id=out></div>
相关文章:
- 如何在Javascript中交换两个列表的子列表
- 使用Jquery比较Javascript中的两个列表/表
- 使用 chui.js $.当有两个列表时,UI 可访问
- 使用 javascript 在两个列表项之间插入下拉项
- jQuery可排序与溢出:隐藏;在两个列表之间
- 遍历两个列表,从第一个列表中获取值,将它们添加到第二个列表中
- AngularUI:在应用过滤器的情况下正确更新两个列表之间的模型
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- 从两个列表中列出一个列表
- 如何在MVC上的两个列表框之间移动项目-JQuery不起作用
- 如何在相反的方向上垂直移动两个列表
- 如何使用JavaScript在两个列表上打印html页面
- JQuery-如何比较两个列表
- 用JavaScript在两个列表之间移动项
- 我如何找到两个列表之间的共同点?
- 在ASP.. NET MVC,我怎么能有列表框来管理两个列表的内容
- 如何在单击时将类删除并添加到两个列表元素中
- 在两个列表中重新排序项目
- Javascript同步两个列表框的滚动
- 如何在javascript中使用getElementByClassName来添加具有相同类名的两个列表中的复选框