Отдельная запятая строки, но не включенная в скобки и скобки - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть элемент с именем атрибута data-options, каждый элемент имеет разные конфигурации, это не формат json для удобства чтения и простоты обслуживания.

<table scoa-table data-options="
responsive:true,
setHeaders:['header1','header2','header3'],
colWidth : 300,
data : {
   "data1" : "value1",
   "data2" : "value2",
   "data3" : "value4",
}`
"></table>

Мне нужно разобрать строкув значения, разделенные запятыми

Пока у меня есть следующее:

var foo = jQuery("[scoa-table]").attr("data-options"),
    result = foo.split(/,(?![^\[]*\])/gm)

, но оно работает только в скобках, а не в скобках

Это то, что яожидается

(3) ["responsive:true", 
    "setHeaders:['header1','header2','header3']",
    "colWidth : 300",
    'data : {"data1" : "value1","data2" : "value2","data3" : "value4",}'
   ]

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Обведите объект и используйте JSON.stringify для преобразования ключа и значения в строку перед тем, как поместить ее в массив

var foo = {
  responsive: true,
  setHeaders: ['header1', 'header2', 'header3'],
  colWidth: 300,
  data: {
    "data1": "value1",
    "data2": "value2",
    "data3": "value4",
  }
}

let arr = [];
for (let keys in foo) {
  arr.push(`${keys}:${JSON.stringify(foo[keys])}`)
}
console.log(arr)
0 голосов
/ 18 февраля 2019

вместо использования запятой, попробуйте "\ n" для новой строки в качестве аргумента разделения: для ввода можно использовать:

> result = foo.split(/\n(?![^\{]*\})/gm)
[ 'responsive:true,',
'setHeaders:[\'header1\',\'header2\',\'header3\'],',
'colWidth : 300,',
'data : {\n   "data1" : "value1",\n   "data2" : "value2",\n   "data3" : "value4",\n}' ]

Кстати: вам, возможно, придется заменить \n ипоследняя запятая в разделенной строке, например:

> result = foo.split(/\n(?![^\{]*\})/gm).map(function (e) {return  e.replace(/\n|,$/g, "")})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...