[英]How to iterate an array of objects recursively in TypeScript/Javascript
[英]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.