将单引号括起来的数组转换为数组

max*_*ell 0 javascript arrays json

深度嵌套在 JSON 对象中,我有属性value.

actions:
    [ { name: 'InviteUser',
        type: 'button',
        value: '[Brian, Timoney, brian@someemaildomain.com,United States, DEM,  edit me, 1580333]' } ],
   callback_id: 'market_invite',
Run Code Online (Sandbox Code Playgroud)

从嵌套的 JSON 中取出,它看起来像:

value: '[Brian, Timoney, brian@someemaildomain.com,United States, DEM,  edit me, 1580333]'
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将其转换为数组?我正在寻找的数组输出是:

["Brian", "Timoney", "brian@someemaildomain.com", "United States", "DEM", "edit me", "1580333"]
Run Code Online (Sandbox Code Playgroud)

很难相信我会问这个问题,因为它看起来非常简单,但是经过一段时间的尝试,比如Array.from()and之类的变化JSON.parse(),并试图在堆栈溢出上找到重复的问题,我感到很困惑。

Jan*_*anS 5

您可以简单地使用字符串 API。根据您对输入中可能出现的字符(尤其是逗号)的确定程度,以下内容可能就足够了:

function valueStringToArray(valueString) {
    return valueString.substr(0, valueString.length - 1).substr(1).split(',');
}
Run Code Online (Sandbox Code Playgroud)


小智 5

var obj = {
  actions: [{
    name: 'InviteUser',
    type: 'button',
    value: '[Brian, Timoney, brian@someemaildomain.com,United States, DEM,  edit me, 1580333]'
  }],
  callback_id: 'market_invite'
};

var arr = obj.actions[0].value.replace(/\[|\]/g, "").split(",").map(str => str.trim());

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

  • 正则表达式删除了“United States”之间的空格。循环遍历数组元素并修剪()它们可能会更好。 (2认同)