簡體   English   中英

數據集到 Javascript/Typescript 中的對象數組

[英]Dataset to an array of objects in Javascript/Typescript

我有兩個數組的輸入對象

payload 

columns:["col1" , "col2","col3"],
data: ["col1value1","col2value1" , "col1value3"] ,
      ["col1value2","col2value2" , "col1value2"]
 

現在我想轉換這兩個對象數組,如下面的 output = [];

[
  { col1: 'col1value1', col2: 'col2value1', col3: col1value3},
  { col1: 'col1value2', col2: 'col2value2', col3: col1value2}
]

嘗試使用reduce 或其他方法——但沒有得到它——必須對數據數組中的列索引進行硬編碼。 有沒有更好更快的方法? 它將在不硬編碼列名的情況下完成。

目前做喜歡

const indexofCol1= this.payload.columns.indexOf["col1"]

然后使用該索引映射到data數組中以獲取所有值——這不是一個好方法。

您可以將.map()Object.fromEntries()結合使用。 由於您想將data數組映射到對象,您可以先對其調用.map() 對於每個內部數組(引爆為row ),您可以使用Object.fromEntries()構建一個對象。 fromEntries()方法采用[[key, value], ...]對數組,您可以構建映射cols數組,其中每個鍵是來自cols的值,每個值是當前row的關聯項大批。

請參閱下面的示例:

 const cols = ["col1" , "col2","col3"]; const data = [["col1value1","col2value1" , "col1value3"], ["col1value2","col2value2" , "col1value2"]]; const res = data.map(row => Object.fromEntries( cols.map((key, i) => [key, row[i]]) )); console.log(res);
 .as-console-wrapper { max-height: 100% !important;} /* ignore */

如果您不能支持Object.fromEntries() ,您可以使用上述使用Object.assign()傳播語法的更瀏覽器友好的版本:

 const cols = ["col1" , "col2","col3"]; const data = [["col1value1","col2value1" , "col1value3"], ["col1value2","col2value2" , "col1value2"]]; const res = data.map(row => Object.assign({}, ...cols.map((key, i) => ({[key]: row[i]})) )); console.log(res);
 .as-console-wrapper { max-height: 100% !important;} /* ignore */

暫無
暫無

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

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