javascript中的按键过滤

javascript中的按键过滤,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我想在javascript中按键过滤 var id =["trans", "fund"] setTimeout(()=>{ id.map((e)=>this.static(e)) }, 2000) static(id){ var li = $.ajax({ url: "/en", method: 'get', global: false, async: false,

我想在javascript中按键过滤

var id =["trans", "fund"]
setTimeout(()=>{
      id.map((e)=>this.static(e))
    }, 2000)

static(id){
var li = $.ajax({
           url: "/en",
          method: 'get',
          global: false,
          async: false,
          data: {
            providers: id
          },
          success: function (data) {
            return data;
          }
        }).responseText;
  var obj1=data; //I need to combine and store data in expected output format
}


//on first call
var obj1={
  country: "SG",
  trans: [{
    rate: 20,
    members: 100
  }]
}
//on second call
var obj1={
  country: "TH",
  fund: [{
    rate: 20,
    members: 100
  }]
}

我有一个ajax函数,在传递id时,将导致obj1一个接一个地成功。 我想按键组合所有结果并推送到单个对象。 如何在javascript中执行以下操作

var id =["trans", "fund"]
setTimeout(()=>{
      id.map((e)=>this.static(e))
    }, 2000)

static(id){
var li = $.ajax({
           url: "/en",
          method: 'get',
          global: false,
          async: false,
          data: {
            providers: id
          },
          success: function (data) {
            return data;
          }
        }).responseText;
  var obj1=data; //I need to combine and store data in expected output format
}


//on first call
var obj1={
  country: "SG",
  trans: [{
    rate: 20,
    members: 100
  }]
}
//on second call
var obj1={
  country: "TH",
  fund: [{
    rate: 20,
    members: 100
  }]
}

预期产出:

var result ={
  trans: [{
    rate: 20,
    members: 100
  }],
  fund: [{
    rate: 20,
    members: 100
  }]
}
试试这个:

var id=[trans,fund]; var result={}; //第一次通话 var obj1={ 国家:新加坡, 反式:[{ 比率:20, 成员:100 }] } 结果=getObjresult,obj1; //待命 var obj1={ 国家:第, 基金:[{ 比率:20, 成员:100 }] } 结果=getObjresult,obj1; console.logresult; 函数getObjresult,obj{ 对于let i=0;i} 试着做这样的事情。我想你的钥匙已经修好了。点击演示页面

  var output = {};
  var id = ["trans", "fund"]

  //on first call
  var obj1 = {
    country: "SG",
    trans: [{
      rate: 20,
      members: 100
    }]
  }
  //on second call
  var obj2 = {
    country: "TH",
    fund: [{
      rate: 20,
      members: 100
    }]
  }

  function getObj(selectedId) {
    console.log(id); // global variable.
    if(!id) return;

    id.forEach(x => {
      let obj1Key = obj1[x];
      if (obj1Key) output[x] = obj1Key;

      let obj2Key = obj2[x];
      if (obj2Key) output[x] = obj2Key;
    })
   console.log('output object', output);
   console.log('JSON:', JSON.stringify(output));
  }

您可以按如下方式尝试,如果结果中已有值,则这将合并这些值

//
 var id =["trans", "fund"];
 var result = {};

 function getObj(obj){
   id.map(val => {
      if(result[val]) { result[val] = [...result[val], ...obj[val]]}
      else result[val] = obj[val]
   })
 }

//on first call
    var obj1={
      country: "SG",
      trans: [{
        rate: 20,
        members: 100
      }]
    }
    getObj(obj1)
/*
{
  trans: [{
    rate: 20,
    members: 100
  }]
}
*/

    //on second call
    var obj1={
      country: "TH",
      fund: [{
        rate: 20,
        members: 100
      }]
    }
getObj(obj2)
/*
{
  trans: [{
    rate: 20,
    members: 100
   }],
   fund: [{
     rate: 20,
     members: 100
   }]
}
*/

您可能希望合并这两个对象?每次连续调用时如何存储obj1?它会取代以前的值吗?你能澄清这个问题吗?@Harish更新了代码