我需要比较这两个Json并获取get1以返回除idConcepto和impuesto与get2相同的所有数据
示例:
get1 = https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=30712413871
"data": [
{
"impuesto": "IVA",
"idConcepto": "30",
"id": "266",
"datos": {
"anticipo": "PRESENTACION",
"vencimiento": "2017-09-18",
"agencia": "AFIP",
"id_perfil": "146"
}
},
{
"impuesto": "GANANCIAS SOCIEDADES",
"idConcepto": "10",
"id": "268",
"datos": {
"anticipo": "PAGO",
"vencimiento": "2017-09-13",
"agencia": "AFIP",
"id_perfil": "146"
}
}
]
get2 = http://estudiomiramonte.com/app/api/impuestos_modal.php?id_perfil=146
"data": [
{
"impuesto": "IVA",
"idConcepto": "30",
"id": "607",
"datos": {
"anticipo": "PRESENTACION",
"vencimiento": "2017-09-18",
"agencia": "AFIP",
"id_perfil": "187"
}
}
]
我需要的结果:
"impuesto": "GANANCIAS SOCIEDADES",
"idConcepto": "10",
"id": "268",
"datos": {
"anticipo": "PAGO",
"vencimiento": "2017-09-13",
"agencia": "AFIP",
"id_perfil": "146"
//get1
$.getJSON("https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=" + "cuit", function(result) {
for (var i = 0; i < result.data.length; i++) {
if (result.data[i].id != otheresult.data[i].id) {
var table_abril = document.getElementById("AGIP_edit_todos");
var row = table_abril.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = result.data[i].id;
cell2.innerHTML = result.data[i].impuesto;
cell3.innerHTML = '<input type="checkbox" name="optionsCheckboxes">';
}
}
});
&#13;
//get2
$.getJSON("api/impuestos_modal.php?id_perfil=" + id + "", function(result) {});
&#13;
答案 0 :(得分:1)
您可以使用ES6或jQuery中的promises存储来自getJson异步的数据。 一旦你在这些变量中都有getJSON,你可以通过lodash.remove()和Array.some()这样做:
var _ = require('lodash');
var data1 = [...JSON1];
var data2 = [...JSON2];
_.remove(data1, obj1 => data2.some(obj2 =>
((obj1.impuesto === obj2.impuesto) &&
(obj1.idConcepto === obj2.idConcepto))));
如果你既不使用ES6也不承诺你可以这样:
var data = {};
$.getJSON("https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=" + "30712413871", function(obj) {
this.data.data1 = obj;
clearData(this.data);
}.bind({data:data}));
$.getJSON("api/impuestos_modal.php?id_perfil=" + "146", function(obj) {
this.data.data2 = obj;
clearData(this.data);
}.bind({data:data}));
function clearData(data) {
var data1 = data.data1;
var data2 = data.data2;
if (data1 && data2) {
_.remove(data1, function(obj1) { data2.some(function (obj2) {
return ((obj1.impuesto === obj2.impuesto) &&
(obj1.idConcepto === obj2.idConcepto))})});
console.log(data1); // Your solution
}
}
答案 1 :(得分:1)
您可以使用array#filter
和array#some
来获取不共享idConcepto
和impuesto
的数据。
var get1 = {"data": [{"impuesto": "IVA","idConcepto": "30","id": "266","datos": {"anticipo": "PRESENTACION","vencimiento": "2017-09-18","agencia": "AFIP","id_perfil": "146"}},{"impuesto": "GANANCIAS SOCIEDADES","idConcepto": "10","id": "268","datos": {"anticipo": "PAGO","vencimiento": "2017-09-13","agencia": "AFIP","id_perfil": "146"}}]},
get2 = { "data": [{"impuesto": "IVA","idConcepto": "30","id": "607","datos": {"anticipo": "PRESENTACION","vencimiento": "2017-09-18","agencia": "AFIP","id_perfil": "187"}}] };
var result = get1.data.filter(function(o1){
return !get2.data.some(function(o2){
return o1.impuesto === o2.impuesto && o1.idConcepto === o2.idConcepto;
});
});
console.log(result);
由于您的两个数据都是从外部来源获取的,因此您可以使用Promise.all()
。一旦得到两个结果,就可以使用上述功能。
直播示例
var get1 = $.getJSON("https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=" + "30712413871").done();
var get2 = $.getJSON("https://estudiomiramonte.com/app/api/impuestos_modal.php?id_perfil=" + "146").done();
Promise.all([get1, get2]).then(function([obj1, obj2]){
var result = obj1.data.filter(function(o1) {
return !obj2.data.some(function(o2) {
return o1.impuesto === o2.impuesto && o1.id === o2.idConcepto;
});
});
console.log(result);
})
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>