如何在JavaScript中将键值对添加到关联数组

let finaloutput = {};
   $.each( arr,function(index,key) { 
     let outarray = [];
     // var id sourced from another function
     outarray.push(id,index,key);  
     //??finaloutput[id].push(outarray);
                        }

在上面的代码中,我试图存储与下面类似的对象。 每次循环获取相同的ID时,它将数组附加到finaloutput对象中 例如 id:index:key

第一个循环,其中id = 7 index = param 1 key = val1

                  {"7":[{param1:val1}]}

2nd .. id = 7 index = param 2 key = val2

                  {"7":[{param1:val1,param2:val2}]}

3rd ... id = 8 index = param 1 key = val1

                  {"7":[{param1:val1,param2:val2}],"8":[{param1:val1}]}

我该如何实现

wenfang204 回答:如何在JavaScript中将键值对添加到关联数组

我尝试使用示例数据生成类似的输出:

    `let indx = ["param1","param2","param3","param4","param5"]
    let key = ["k1","k2","k3","k4","k5"]
    let id = ["1","2","3","4","5"]
    let resultObj = {}
    for (let i = 0; i < 5; i++) {
      if (resultObj[id]) {
        let temp=Object.assign({},{[indx[i]]:key[i]},...resultObj[id[i]])
        resultObj[id[i]] = [temp];
      }
      else{
        let ob=[{[indx[i]]:key[i]}]
        resultObj[id[i]]=ob
      }
    }
    console.log(resultObj)`

对于您而言,您可以执行以下操作:           let finaloutput = {}; $.each(arr,function (index,key) { if (finaloutput[id]) { let temp = Object.assign({},{ [index]: key },...finaloutput[id]) finaloutput[id] = [temp]; } else { let temp2 = [{ [index]: key }] finaloutput[id] = temp2 } }

注意,请参阅我的示例以更好地理解,以防万一我无法准确地制定出您的代码的答案或给出错误信息

,

您有一个对象finaloutput。因此,您的目标可以分为几个较小的部分:

  • 只需在对象中创建一个键
  • 为上述键分配一个数组
  • 将所需值放入数组

因此代码应如下所示:

let finaloutput = {};
$.each( arr,function(index,key) { 
    finaloutput[key] = []; 
    let outarray = [];
    // var id sourced from another function
    finaloutput[key].push({id:key});  
}     

或者可以使用reduce()方法来完成。让我举一个例子:

const array = ["one","two","three","one","four","five"];

const result = array.reduce((a,c) => {
  a[c]=a[c] || [];
  a[c].push({yourKey: c});
  return a;
},{})

console.log(result);

本文链接:https://www.f2er.com/3157859.html

大家都在问