簡體   English   中英

將 2 個 arrays 轉換為鍵值 object,一個數組保存鍵,第二個是匹配索引值的嵌套數組

[英]convert 2 arrays into key value object, one array hold the keys, they second is nested array of matching indexed values

將它的內部成員 valueArr 的每個刺激與來自 keysArr 的匹配鍵結合起來,索引將始終相互匹配。

我正在尋找的結果:每個 object 的密鑰,id 等於“internalid”但是如果不清楚,我會解決

const valuesArr = 
       ["10","9","Item","Bank","2","true","true","Result7","5675"],
       ["9","1","Expenses","OthExpense","4","true","true","9999","9999"],
       ["8","8","Expenses","OthAsset","6","false","false","6666","77777"],
       ["7","8","Expenses","AcctPay","4","true","true","666","7777"],
       ["6","123","123","123","123","123","123","123","123"],
       ["5","123","123","123","123","123","123","123","123"],
       ["4","Test1","Item","OthCurrAsset","2","Result5","Result6","ytrytrytryrty","32432"],
       

       ["2","Result1","Result2","Result3","Result4","Result5","Result6","Result7","Result8"],
       ["1","Test1","Test12","Test13","Test14","Test15","Test16","Test17","Test18"]]


const keysArr = 
        ["internalid",
        "custrecord_st_segment_transaction_type",
        "custrecord_st_segment_sublist",
        "custrecord_st_segment_account_type",
        "custrecord_st_segment_subsidiary",
        "custrecord_st_segment_department",
        "custrecord_st_segment_class",
        "custrecord_st_segment_location",
        "custrecord_st_segment_custom_segment"]

       
result:
       
       {"1":{"id":"1","values":{"internalid":"1","custrecord_st_segment_transaction_type":"Test1","custrecord_st_segment_sublist":"Test12","custrecord_st_segment_account_type":"Test13","custrecord_st_segment_subsidiary":"Test14","custrecord_st_segment_department":"Test15","custrecord_st_segment_class":"Test16","custrecord_st_segment_location":"Test17","custrecord_st_segment_custom_segment":"Test18"}},
       "2":{"id":"2","values":{"internalid":"2","custrecord_st_segment_transaction_type":"Result1","custrecord_st_segment_sublist":"Result2","custrecord_st_segment_account_type":"Result3","custrecord_st_segment_subsidiary":"Result4","custrecord_st_segment_department":"Result5","custrecord_st_segment_class":"Result6","custrecord_st_segment_location":"Result7","custrecord_st_segment_custom_segment":"Result8"}},
      

       "4":{"id":"4","values":{"internalid":"4","custrecord_st_segment_transaction_type":"Test1","custrecord_st_segment_sublist":"Item","custrecord_st_segment_account_type":"OthCurrAsset","custrecord_st_segment_subsidiary":"2","custrecord_st_segment_department":"Result5","custrecord_st_segment_class":"Result6","custrecord_st_segment_location":"ytrytrytryrty","custrecord_st_segment_custom_segment":"32432"}},
       "5":{"id":"5","values":{"internalid":"5","custrecord_st_segment_transaction_type":"123","custrecord_st_segment_sublist":"123","custrecord_st_segment_account_type":"123","custrecord_st_segment_subsidiary":"123","custrecord_st_segment_department":"123","custrecord_st_segment_class":"123","custrecord_st_segment_location":"123","custrecord_st_segment_custom_segment":"123"}},
       "6":{"id":"6","values":{"internalid":"6","custrecord_st_segment_transaction_type":"123","custrecord_st_segment_sublist":"123","custrecord_st_segment_account_type":"123","custrecord_st_segment_subsidiary":"123","custrecord_st_segment_department":"123","custrecord_st_segment_class":"123","custrecord_st_segment_location":"123","custrecord_st_segment_custom_segment":"123"}},
       "7":{"id":"7","values":{"internalid":"7","custrecord_st_segment_transaction_type":"8","custrecord_st_segment_sublist":"Expenses","custrecord_st_segment_account_type":"AcctPay","custrecord_st_segment_subsidiary":"4","custrecord_st_segment_department":"true","custrecord_st_segment_class":"true","custrecord_st_segment_location":"666","custrecord_st_segment_custom_segment":"7777"}},
       "8":{"id":"8","values":{"internalid":"8","custrecord_st_segment_transaction_type":"8","custrecord_st_segment_sublist":"Expenses","custrecord_st_segment_account_type":"OthAsset","custrecord_st_segment_subsidiary":"6","custrecord_st_segment_department":"false","custrecord_st_segment_class":"false","custrecord_st_segment_location":"6666","custrecord_st_segment_custom_segment":"77777"}},
       "9":{"id":"9","values":{"internalid":"9","custrecord_st_segment_transaction_type":"1","custrecord_st_segment_sublist":"Expenses","custrecord_st_segment_account_type":"OthExpense","custrecord_st_segment_subsidiary":"4","custrecord_st_segment_department":"true","custrecord_st_segment_class":"true","custrecord_st_segment_location":"9999","custrecord_st_segment_custom_segment":"9999"}},
       "10":{"id":"10","values":{"internalid":"10","custrecord_st_segment_transaction_type":"9","custrecord_st_segment_sublist":"Item","custrecord_st_segment_account_type":"Bank","custrecord_st_segment_subsidiary":"2","custrecord_st_segment_department":"true","custrecord_st_segment_class":"true","custrecord_st_segment_location":"Result7","custrecord_st_segment_custom_segment":"5675"}}]

我認為 OP 是在詢問如何“壓縮”兩個 arrays,其中一個有鍵,一個有值。 如果是這樣, Object.fromEntries() 非常有用

一個簡單的 zip,如下所示:

// a simple zip
function zip(keys, values) {
  return Object.fromEntries(
    keys.map((key, index) => [key, values[index]])
  );
}

OP 似乎希望 values 數組中的前導元素成為新 object 中的一個特別命名的字段,以及生成的 object 的鍵。 在這里,應用簡單的 zip...

 function zip(keys, values) { return Object.fromEntries( keys.map((key, index) => [key, values[index]]) ); } // the value array contains an "id" element at the start // produce an object that looks like { id: number, values: {...} } function objectFromValues(keys, values) { return { id: values[0], values: zip(keys, values.slice(1)) } } const valuesArr = [ [1, "A", "B", "C"], [2, "D", "E", "F"] ]; const keys = ["keyA", "keyB", "keyC"]; const result = valuesArr.reduce((acc, values) => { acc[values[0]] = objectFromValues(keys, values); return acc; }, {}); console.log(result)

暫無
暫無

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

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