簡體   English   中英

如何使用 JS Array map() 從 res.body.results 對象數組中提取月份值

[英]How to extract the month values from the res.body.results array of objects using JS Array map()

還試圖在我的代碼片段中使用正則表達式從字符串中提取月份的自定義代碼。 我相信我很接近但不完全。 控制台日志正在返回鍵/值對的“未定義”值,並在應該返回 60 的月份返回 0。任何關於如何重組它的想法都將非常感激。 我正在嘗試從數組中獲取最多的月數/年數,並將其設置為 HubSpot 中的一個屬性。 感謝您就如何正確配置以獲得正確值提供任何建議。

          hubspotClient.crm.lineItems.batchApi.read({
            inputs,
            properties: ['hs_recurring_billing_period', 'recurringbillingfrequency',]
            })
            .then(res => {
              const inputs = res.body.results.map(result => {
                result.properties.recurringbillingfrequency = 
                result.properties.recurringbillingfrequency;
                result.properties.months = Number(result.properties.months);
                return { term: hs_recurring_billing_period, frequency: recurringbillingfrequency };
                                   
              })
              console.log(inputs);
              
              let term = 0;
              const largestNum = (years) => {
                
              //let term = 0;  
              for (let i=0; i <res.body.results.length; i++){
              let { recurringbillingfrequency, hs_recurring_billing_period } = 
              res.body.results[i].properties;
              console.log(recurringbillingfrequency, hs_recurring_billing_period)
              
              if(recurringbillingfrequency = "Annually")
              {
                let months = Number(hs_recurring_billing_period.replace(/\D/g, ''));
                let years = months / 12;

                
                // let term = 0;
                if (years[i] > term) {
                  term = years[i];
                }
              }
            }

                return term;
              }
              console.log(largestNum(term));
              return;

map function 對我來說看起來很奇怪:

const inputs = res.body.results.map(result => {
  result.properties.recurringbillingfrequency = result.properties.recurringbillingfrequency;
  result.properties.months = Number(result.properties.months);
  return { term: hs_recurring_billing_period, frequency: recurringbillingfrequency };                            
})

在映射 function 的 scope 內,返回 object 中的recurringbillingfrequencyhs_recurring_billing_period未定義。 用 as 替換返回值會起作用嗎?

return { 
  hs_recurring_billing_period: result.properties.hs_recurring_billing_period, 
  recurringbillingfrequency: result.properties.recurringbillingfrequency
};                            

另外,我不太確定這條線是如何必要的:

result.properties.recurringbillingfrequency = result.properties.recurringbillingfrequency;

因此,要么這個循環將工作並提取月份並設置為年,要么你可以使用 Lodash 和一行代碼。

              let term = 0;  
              for (let i=0; i <inputs.length; i++){
              let { recurringbillingfrequency, hs_recurring_billing_period } = 
              inputs[i];
              console.log(recurringbillingfrequency, hs_recurring_billing_period)
              
              if(recurringbillingfrequency.toLowerCase() === 'annually')
              {
                let months = hs_recurring_billing_period;

                let years = months / 12.0;
                /*
                 let highest = 0;
                 function getHighestTerm(values) {
                   for (let j=0; j < values.length; j++)
                  
                   if (j === 0) {
                     highest = values;
                   } else if (highest > values[j]) {
                     highest = values[j];
                   }
                   return highest;
                 }
                
                */
                term = _.max(_.map(inputs, 'hs_recurring_billing_period')) / 12.0;

暫無
暫無

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

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