0

还试图在我的代码片段中使用正则表达式从字符串中提取月份的自定义代码。我相信我很接近但不完全。控制台日志返回键/值对的“未定义”值,返回 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;
4

2 回答 2

0

map 函数对我来说看起来很奇怪:

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 };                            
})

在映射函数的范围内,recurringbillingfrequency并且hs_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;
于 2021-03-26T02:47:51.253 回答
0

因此,要么这个循环将工作并提取月份并设置为年,要么你可以使用 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;
于 2021-03-27T20:09:47.410 回答