繁体   English   中英

在 Array.map 中加入对象值

[英]Join object values in Array.map

const rules = transposed
  .slice(1)
  .map(
    ([
      sourceSystem,
      classification1, classification2, classification3, classification4,
      segment,
      calendar,
      createSla,
      slaDurationInMinutes,
      sendNotification,
      useHolidays,
    ]: any) => ({
      calendar,
      // classification: 'ABC, DEF',
      classification1,
      classification2,
      classification3,
      classification4,
      createSla,
      segment,
      sendNotification,
      slaDurationInMinutes,
      sourceSystem,
    }),
  );

如何加入classification1...4的字符串值,如

classification: classification1 + classification2 + classification3 + classification4

结果应该是classifications: "ABC,DEF,XYZ,PEF"

简单地尝试使用模板文字:

const rules = transposed
  .slice(1)
  .map(
    ([
      sourceSystem,
      classification1, classification2, classification3, classification4,
      segment,
      calendar,
      createSla,
      slaDurationInMinutes,
      sendNotification,
      useHolidays,
    ]: any) => {
    return {
      calendar,
      classification: `${classification1},${classification2},${classification3},${classification4}`,
      createSla,
      segment,
      sendNotification,
      slaDurationInMinutes,
      sourceSystem
    }
  });

你的“喜欢”例子几乎就是你会怎么做,除非还有你没有提到的其他限制(比如其中一些是可选的/可能是空白的,等等):

const rules = transposed
  .slice(1)
  .map(
    ([
      sourceSystem,
      classification1, classification2, classification3, classification4,
      segment,
      calendar,
      createSla,
      slaDurationInMinutes,
      sendNotification,
      useHolidays,
    ]: any) => ({
      calendar,
      classification: classification1 + "," + classification2 + "," + classification3 + "," + classification4, // ***
      createSla,
      segment,
      sendNotification,
      slaDurationInMinutes,
      sourceSystem,
    }),
  );

(或者使用Nenad 所示的模板文字。)

如果其中一些可能是空白的并且您想跳过它们,您可以创建并过滤一个数组,然后使用.join(",")来连接值:

const rules = transposed
  .slice(1)
  .map(
    ([
      sourceSystem,
      classification1, classification2, classification3, classification4,
      segment,
      calendar,
      createSla,
      slaDurationInMinutes,
      sendNotification,
      useHolidays,
    ]: any) => ({
      calendar,
      classification: [classification1, classification2, classification3, classification4].filter(c => !!c).join(",")
      createSla,
      segment,
      sendNotification,
      slaDurationInMinutes,
      sourceSystem,
    }),
  );

(是的, .filter(c => !!c)可能只是.filter(c => c).filter(Boolean) 。我写的东西对我来说似乎很清楚,让缩小器担心缩小。:-))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM