Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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:在多个对象数组中匹配对象+;别名_Javascript_Lodash - Fatal编程技术网

Javascript:在多个对象数组中匹配对象+;别名

Javascript:在多个对象数组中匹配对象+;别名,javascript,lodash,Javascript,Lodash,我想匹配多个数组,并在有匹配时构建另一个数组。该键可以匹配任意数量的数组,也可以根本不匹配 [ [{ 'a': 13 }, { 'b': 62 }, { 'c': 93 }, { 'd': 52 }], [{ 's': 15 }, { 'y': 15 }, { 'x': 78 }, { 'd': 84 }], [{ 't': 35 }, { 'd': 33 }, { 'x': 12 }, { 'c': 62 }] ] 预期结果: [ {label: c, arr1: 93, a

我想匹配多个数组,并在有匹配时构建另一个数组。该键可以匹配任意数量的数组,也可以根本不匹配

[ [{ 'a': 13 }, { 'b': 62 }, { 'c': 93 }, { 'd': 52 }],
  [{ 's': 15 }, { 'y': 15 }, { 'x': 78 }, { 'd': 84 }],
  [{ 't': 35 }, { 'd': 33 }, { 'x': 12 }, { 'c': 62 }] ]
预期结果:

[ {label: c,  arr1: 93,    arr2: null,  arr3: 63},
  {label: d,  arr1: 52,    arr2: 84,    arr3: 33},
  {label: x,  arr1: null,  arr2: 78,    arr3: 12} ]


还有一个更高级的问题。是否可以为某些键设置别名。也许“b”也被称为“y”,而“s”也被称为“t”。

试着这样做:

let output = [];
let aliases = {'b': ['y'], 's': ['t']};
let totalArrays = yourArray.length;

yourArray.forEach((innerArray, i) => 
   innerArray.forEach(obj =>{
      for(var key in obj){
         let current = output.find(e => e.label == key || (aliases[e.label] || []).indexOf(key) !== -1);
            if(!current){
               current = { label: key };
               for(let i = 0; i < totalArrays; i++){
                   current['arr' + (i + 1)] = null;
               }
               output.push(current);
           }

           current['arr'+ (i +1)] = obj[key];
       } 
 }));
let output=[];
让别名={'b':['y'],'s':['t']};
让TotalArray=yourArray.length;
yourArray.forEach((innerArray,i)=>
innerArray.forEach(obj=>{
for(obj中的var键){
让current=output.find(e=>e.label==key | | |(别名[e.label]| |[])。indexOf(key)!=-1);
如果(!当前){
当前={label:key};
for(设i=0;i
你从什么代码开始?了不起的人。我要花上几个小时才能弄明白这样的事情。如何删除没有任何匹配项的对象?当标签第一次出现时,会动态添加输出条目,因此不应该有任何不匹配的对象。我假设在源数组中不会有像{'a':undefined}这样的对象。
let output = [];
let aliases = {'b': ['y'], 's': ['t']};
let totalArrays = yourArray.length;

yourArray.forEach((innerArray, i) => 
   innerArray.forEach(obj =>{
      for(var key in obj){
         let current = output.find(e => e.label == key || (aliases[e.label] || []).indexOf(key) !== -1);
            if(!current){
               current = { label: key };
               for(let i = 0; i < totalArrays; i++){
                   current['arr' + (i + 1)] = null;
               }
               output.push(current);
           }

           current['arr'+ (i +1)] = obj[key];
       } 
 }));