首页 > 解决方案 > 使用 JS 将字符串数组减少为单个字符串

问题描述

我正在尝试将一组字符串简化为单个字符串,只有当我在每个数组中有一个字符串但不超过一个时它才能正常工作。

const listItems = [
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-1'
    }
  },
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-2'
    }
  },
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-3'
    }
  }
];

const listIds = listItems.reduce((a, currentValue) =>
            [...a, currentValue.sys.id], [])

// I have also tried `mlistId.toString()`
console.log(...listIds)

目前我得到,例如:

m-list-basic-1 m-list-basic-2 m-list-basic-3(所有在同一行使用传播)

m-list-basic-1,m-list-basic-2,m-list-basic-3(逗号使用toString()

而我希望他们像这样单独:

m-list-basic-1

m-list-basic-2

m-list-basic-3

标签: javascriptarrays

解决方案


如果您尝试将 打印id为新的行分隔字符串,则不需要 reduce 来执行此操作。相反,您想使用Array.map, with String.joinwith 一个\n字符。

请参见下面的示例:

const listItems = [
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-1'
    }
  },
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-2'
    }
  },
  {
    sys: {
      type: 'Link',
      linkType: 'Entry',
      id: 'm-list-basic-3'
    }
  }
];

console.log(listItems.map(item => item.sys.id).join('\n'));


推荐阅读