Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何比较或关联2 getJson?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何比较或关联2 getJson?

Javascript 如何比较或关联2 getJson?,javascript,jquery,json,Javascript,Jquery,Json,我需要比较这两个Json并获取get1以返回所有数据,除了idConcepto和impuesto与get2相同的数据 例如: get1= get2= 结果我需要: //get1 $.getJSON(“https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=“+”cuit“,函数(结果){ 对于(var i=0;i

我需要比较这两个Json并获取get1以返回所有数据,除了idConcepto和impuesto与get2相同的数据

例如:

get1=

get2=

结果我需要:

//get1
$.getJSON(“https://maxtechglobal.com/vencimientos/agip/ib.php?cuit=“+”cuit“,函数(结果){
对于(var i=0;i});您可以使用ES6或jQuery中的承诺存储来自getJson async的数据。
一旦在这样的变量中有了两个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
    }

}
您可以使用
array#filter
array#some
来获取不共享相同
idConcepto
imputesto
的数据

var get1={“data”:[{“impusto”:“IVA”,“idConcepto”:“30”,“id”:“266”,“datos”:“antipo”:“PRESENTACION”,“venciiento”:“2017-09-18”,“agencia”:“AFIP”,“id_perfil”:“146”},{“impusto”:“ganiancias SOCIEDADES”,“idConcepto”:“10”,“id”:“268”,“datos”:“antipo”:“PAGO”,“venciiento”:“2017-09-13”,“agencia”:“AFIP”,“id_perfil”:“146”},
get2={“数据”:[{“impuesto”:“IVA”,“idConcepto”:“30”,“id”:“607”,“datos”:{“anticipo”:“PRESENTACION”,“vencimiento”:“2017-09-18”,“agencia”:“AFIP”,“id_perfil”:“187”}};
var result=get1.data.filter(函数(o1){
return!get2.data.some(函数(o2){
返回o1.impuesto==o2.impuesto&&o1.idConcepto==o2.idConcepto;
});
});

控制台日志(结果)
您需要在另一个回调函数中执行
$.getJSON
中的一个,或者使用承诺等待这两个函数完成。我如何设置条件,使其仅显示不重复的函数?使用
数组.prototype.filter()
删除重复的元素。您也可以使用lodash或underline.js之类的库。我喜欢答案,但返回我:
未捕获错误:尚未为上下文加载模块名“lodash”:。使用require([])
我使用这个cdn:')如果您像您一样通过cdn导入,您可以删除该行:var=require('lodash');您在JSFIDLE中的脚本不起作用,因为您没有使用ES6,也没有处理异步数据,所以我更新了上面的解决方案以适应您的用例:)我说它不起作用的意思是控制台返回完整的data1数组,而不删除重复的数组,就像您编写的新代码一样,我得到了相同的结果…但是如何替换get 1和get 2中的getJson?更新了解决方案,请检查。您面临的问题是什么?按照您的代码将其用于不同的函数,尽管它看起来非常重复,但有没有办法优化它?您应该创建一个公共函数,并将promise1、Promise2和表的id传递给它。
"impuesto": "GANANCIAS SOCIEDADES",
"idConcepto": "10",
"id": "268",
"datos": {
"anticipo": "PAGO",
"vencimiento": "2017-09-13",
"agencia": "AFIP",
"id_perfil": "146"
var _ = require('lodash');

var data1 = [...JSON1];

var data2 = [...JSON2];

_.remove(data1,  obj1 => data2.some(obj2 =>
    ((obj1.impuesto === obj2.impuesto) &&
        (obj1.idConcepto === obj2.idConcepto))));
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
    }

}