簡體   English   中英

比較兩個數組並根據兩個數組的索引添加新鍵

[英]Compare two arrays and add new keys based on Index of both Arrays

我在海圖中創建了一個朝陽圖,但在數組中創建圖層時遇到了麻煩。

例如,標頭數組是第2層,數據數組是第3層。

我需要將標題名稱與數據中的組進行比較,並創建一個同時提供子ID和父ID的新數組。

在代碼下方發布了我當前的解決方案。

 const headers = ['Cars', 'Fruits', 'Food']; const data = [{ group: 'Cars', name: 'BMW', value: '25641' }, { group: 'Fruits', name: 'Apple', value: '45876' }, { group: 'Cars', name: 'Benz', value: '65784' }, { group: 'Cars', name: 'Toyota', value: '254' }, { group: 'Food', name: 'Pizza', value: '87535' }, { group: 'Cars', name: 'Honda', value: '65796' }, { group: 'Fruits', name: 'Banana', value: '98631' }, { group: 'Fruits', name: 'Orange', value: '87563' }, { group: 'Food', name: 'Burger', value: '78324' }, { group: 'Fruits', name: 'Mango', value: '24598' } ] 

這就是我嘗試過的。

 const newArray = headers.map(function(itemA, indexA) { return data.map(function(itemB, indexB) { return { id: `3.${indexB + 1}`, parentId: `2.${indexA + 1}`, value: itemB.value, name: itemB.name } }) }) 

這是我期望的輸出:

 const newArray = [{ id: '3.1', parentId: '2.1', name: 'BMW', value: '25641' }, { id: '3.2', parentId: '2.2', name: 'Apple', value: '45876' }, { id: '3.3', parentId: '2.1', name: 'Benz', value: '65784' }, { id: '3.4', parentId: '2.1' name: 'Toyota', value: '254' }, { id: '3.5', parentId: '2.3', name: 'Pizza', value: '87535' }, { id: '3.6', parentId: '2.1', name: 'Honda', value: '65796' }, { id: '3.7', parentId: '2.2', name: 'Banana', value: '98631' }, { id: '3.8', parentId: '2.2', name: 'Orange', value: '87563' }, { id: '3.9', parentId: '2.3', name: 'Burger', value: '78324' }, { id: '3.10', parentId: '2.2', name: 'Mango', value: '24598' } ] 

您不需要嵌套映射-它將導致嵌套結果數組。 您只需要一個,因為data和預期輸出之間存在一對一的關系。 您可以只對數據進行map()並在運行時查找父索引。

 const headers = ['Cars', 'Fruits', 'Food']; const data = [{group: 'Cars',name: 'BMW',value: '25641'}, {group: 'Fruits',name: 'Apple',value: '45876'},{group: 'Cars',name: 'Benz',value: '65784'},{group: 'Cars',name: 'Toyota',value: '254'},{group: 'Food',name: 'Pizza',value: '87535'},{group: 'Cars',name: 'Honda',value: '65796'},{group: 'Fruits',name: 'Banana',value: '98631'},{group: 'Fruits',name: 'Orange',value: '87563'},{group: 'Food',name: 'Burger',value: '78324'},{group: 'Fruits',name: 'Mango',value: '24598'}] const newArray = data.map(function(itemB, indexB) { let parentIndex = headers.indexOf(itemB.group) // just find the parent index return { id: `3.${indexB + 1}`, parentId: `2.${parentIndex + 1}`, value: itemB.value, name: itemB.name } }) console.log(newArray) 

暫無
暫無

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

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