簡體   English   中英

Javascript:在多個對象+別名數組中匹配對象

[英]Javascript: Matching Objects in Multiple Arrays of Objects + Aliases

我想匹配多個數組,並在存在匹配項時構建另一個數組。 鍵可以匹配任意數量的數組,也可以完全不匹配。

[ [{ '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} ]

label   arr1    arr2    arr3
============================
c       93      null    62
d       52      84      33
x       null    78      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];
       } 
 }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM