深深嵌套在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()
之类的变体并尝试在堆栈溢出时找到重复的问题,我我感到困惑。
答案 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;
答案 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"]