【问题标题】:Converting an array in curly braces to a square bracketed array将花括号中的数组转换为方括号数组
【发布时间】:2019-01-13 14:46:03
【问题描述】:

我继承了一个数据库,该数据库以以下格式存储字符串数组:

{"First","Second","Third","Fourth"}

这在应用程序中作为有序列表输出。我们目前正在替换前端移动应用程序(离子/角度),并希望在这个数组上做一个 ngFor。在第一次迭代中,我们对花括号进行了快速而肮脏的替换,然后将字符串拆分为“,”,但希望使用更好的方法。

将这种类型的字符串视为数组的最佳方法是什么?

【问题讨论】:

  • 如何更好?您使用的方法有什么问题?
  • 只需用括号替换第一个和最后一个波浪形,然后JSON.parse 即可。

标签: javascript arrays angular ionic-framework ionic3


【解决方案1】:

您可以将大括号字符串替换为括号:

str.replace(/{(.*)}/, '[$1]')

然后可以将这个特定的字符串解析为一个数组(通过 JSON.parse)。

【讨论】:

  • 是的 - 这几乎正是我们所拥有的,但随后是拆分。我将把它打开一会儿,但我想我们可以把它换成 JSON.parse 并留在那里。谢谢!
【解决方案2】:

如果您希望在前端对数组进行解析,这可行吗?:

const oldStyle = '{"First","Second","Third","Fourth"}'

const parseOldStyleToArray = input => input
  .replace(/[\{\}]/g, '')
  .split(',')
  .map(item => item.replace(/\"/g, ''))
  

const result = parseOldStyleToArray(oldStyle)

console.dir(result)

【讨论】:

    【解决方案3】:

    通过key:value 映射进行更广泛替换的另一种方法。

    str = '{"First","Second","Third","Fourth"}';
    mapping = {
      '{': '[',
      '}': ']'
    }
    result = str.replace(/[{}]/g, m => mapping[m]);
    console.log(result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多