Преобразовать предварительно отформатированную строку в массив - PullRequest
0 голосов
/ 14 января 2019

Как я могу легко преобразовать эту строку в вектор в JavaScript?

"'id': '123', 'name': 'Bob', 'revenue': '51.1'"

Большое спасибо

1 Ответ

0 голосов
/ 14 января 2019

Я предполагаю, что вы думаете об ассоциативном массиве, который JavaScript не поддерживает. Тем не менее, объекты в JavaScript могут почти рассматриваться как ассоциативные массивы, поскольку объект на самом деле является просто корзиной для хранения пар ключ / значение. С учетом сказанного ниже приведен некоторый код, который будет анализировать вашу строку и создавать литерал объекта. В коде есть второй пример, который вместо этого будет хранить каждую пару ключ / значение в виде строки в массиве:

//The original string
var s = "'id': '123', 'name': 'Bob', 'revenue': '51.1'";

//Turn the string into a structured object
var f = s.split(',').map(s => {
  var kv = s.split(':');
  var k = kv[0].trim();
  var v = kv[1].trim();
  return {
    k,
    v
  };
});

//Use reduce to compose into a larger object
var o = f.reduce((accum, el) => {
  var {
    k,
    v
  } = el;
  accum[k.replace(/'/gi, '')] = v;
  return accum;
}, {});
console.log(o);

//Or keep each item as a string in an array
var a = f.reduce((accum, el) => {
  var {
    k,
    v
  } = el;
  accum.push(`${k.replace(/'/gi, '')}:${v}`);
  return accum;
}, []);
console.log(a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...