我有2个表,比如表1和表2。
表1有2列:
desvar_twc
表2还有2列:
Col B | Col C
row 11 | row 12
row 21 | row 22
row 31 | row 32
我想将表1与表2进行比较并做一些事情;比较两个表并确保表1的所有缺失值以相同的顺序添加到表2中。
预期结果
Col B | Col C
row 21 | row 22
row 21 | row 01
row 11 | row 12
我尝试在两个表上使用foreach循环实现,假设JSON结构中的表,但我不确定我是否正确。实现上述结果的最佳方法是什么?感谢
样本清单:
Col B | Col C
row 11 | row 12
row 21 | row 22
row 31 | row 32
row 21 | row 01
答案 0 :(得分:0)
我认为你想要做3个嵌套循环而不是4个。你为行做了适当的嵌套循环,但是当你遍历表1的列时,你只需使用索引从表2中获得相应的列。 / p>
将其中一个表的克隆作为输出也是一个好主意...更改正在循环的数组可能会导致问题。
$(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>