javascript中的按键过滤
我想在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,
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更新了代码