亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從兩個不同的對象數組中選擇數據以創建一個新的對象數組

從兩個不同的對象數組中選擇數據以創建一個新的對象數組

蠱毒傳說 2022-07-21 20:58:19
我有以下對象數組:const formulas =[    { "formulaID": "1", "versionID": 1, "formulaClass": 3, "formulaType": "34", "outputName": "Chocolate Milk 2%" },    { "formulaID": "4", "versionID": 1, "formulaClass": 3, "formulaType": "17", "outputName": "Hazelnut Creamer" },    { "formulaID": "6", "versionID": 1, "formulaClass": 3, "formulaType": "23", "outputName": "White Milk 2%" }];const yields =[    { "formulaID": "4", "versionID": 1, "yieldFactor": 0.93 },    { "formulaID": "4", "versionID": 2, "yieldFactor": 0.98 },    { "formulaID": "6", "versionID": 1, "yieldFactor": 0.95 },    { "formulaID": "7", "versionID": 1, "yieldFactor": 0.85 }];并嘗試以編程方式創建此輸出:const result =[    { "formulaID": "7", "versionID": 1, "yieldFactor": 0.85, "outputName": "" },    { "formulaID": "4", "versionID": 1, "yieldFactor": 0.93, "outputName": "Hazelnut Creamer" },    { "formulaID": "4", "versionID": 2, "yieldFactor": 0.98, "outputName": "" },    { "formulaID": "6", "versionID": 1, "yieldFactor": 0.95, "outputName": "White Milk 2%" }];在這篇文章的幫助下,我編寫了以下代碼:const result = yields.map(yld => ({    formulaID: yld.formulaID,    versionID: yld.versionID,    yieldFactor: yld.yieldFactor,    outputName: formulas.filter(f => (f.formulaID + '-' + f.versionID).includes(yld.formulaID + '-' + yld.versionID))}));console.log(result);它接近預期的結果,但我不確定如何僅隔離outputName. 在其當前狀態下,它給出了找到匹配項的整個數組。對于原始源數據數組之間不匹配的位置,如何僅顯示outputName匹配項和空字符串?outputName編輯 - 當前輸出如下所示:
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

Using.filter將始終返回滿足您條件的公式數組,因此您需要先檢查它是否給出結果,然后僅從.outputName其結果中檢索。


可能是這樣的:


const result = yields.map(yld => {

  const targetFormulas = formulas.filter(f => (f.formulaID + '-' + f.versionID).includes(yld.formulaID + '-' + yld.versionID));

  const outputName = targetFormulas.length ? targetFormulas.map(f => f.outputName).join(',') : ''

  return {

    formulaID: yld.formulaID,

    versionID: yld.versionID,

    yieldFactor: yld.yieldFactor,

    outputName

  }

});

我用a.join(',')來返回用逗號分隔的outputNames,如果有超過1個。

如果你確定只會返回1個,你可以這樣做 targetFormulas.map(f => f.outputName)[0]


這將返回以下結果


[

   {

      "formulaID":"4",

      "versionID":1,

      "yieldFactor":0.93,

      "outputName":"Hazelnut Creamer"

   },

   {

      "formulaID":"4",

      "versionID":2,

      "yieldFactor":0.98,

      "outputName":""

   },

   {

      "formulaID":"6",

      "versionID":1,

      "yieldFactor":0.95,

      "outputName":"White Milk 2%"

   },

   {

      "formulaID":"7",

      "versionID":1,

      "yieldFactor":0.85,

      "outputName":""

   }

]


查看完整回答
反對 回復 2022-07-21
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號