将单引号包围的数组转换为数组

时间:2017-12-11 17:06:10

标签: 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',

退出嵌套的JSON看起来像:

value: '[Brian, Timoney, brian@someemaildomain.com,United States, DEM,  edit me, 1580333]'

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

["Brian", "Timoney", "brian@someemaildomain.com", "United States", "DEM", "edit me", "1580333"]

很难相信我问这个问题,因为它看起来非常直截了当,但经过一段时间尝试Array.from()JSON.parse()之类的变体并尝试在堆栈溢出时找到重复的问题,我我感到困惑。

3 个答案:

答案 0 :(得分:3)



const array = //your data
var output = []
for (let i = 0; i < array.length; i++)
    for (let k = 0; k < array[i].writers.length; k++) {
        let t = output.find(function(a){return array[i].writers[k].name === a.name})
        if (t)
            t.documents.push(array[i].documentId)
        else
            output.push({name: array[i].writers[k].name, documents: [array[i].documentId]})
  }
console.log(output)
&#13;
&#13;
&#13;

答案 1 :(得分:2)

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

function valueStringToArray(valueString) {
    return valueString.substr(0, valueString.length - 1).substr(1).split(',');
}

答案 2 :(得分:2)

尝试使用内置的字符串方法,例如:

function parseArrayValues(s) {
  return s.substr(1, s.length-2).split(/\s*,\s*/);
}

parseArrayValues(actions[0].value);
// => ["Brian", "Timoney", "brian@someemaildomain.com", "United States", "DEM", "edit me", "1580333"]