Преобразовать строку в объект, разделив строку JavaScript - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно преобразовать полные строки в массив, комбинацию объектов.Пример,

let string = {'user-0-residences-0-pincode': 678987};

// Expecting output will be
{
  user: [
    {
      residences: [
        {
          pincode: 678987
        }]
    }]
}

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

// Ожидаемый результат будет {user: [{residences: [{pincode: 678987}]}]} *

Ваш результат не выглядит правильным ...

Я думаю, вы хотели разобрать строку: "user-0-residences-0-pincode-678987"

Вы можете сделать это:

var string = "user-0-residences-0-pincode-678987";
var arr = string.split("-");
var result = {};
for (var i = 0; i < arr.length; i+=2) {
	result[arr[i]] = arr[i + 1];
}
console.log(result);
0 голосов
/ 20 сентября 2019

Согласно вашему требованию, вы можете попробовать следующий код

 let string = { "user-0-residences-0-pincode": 678987 };
  let output = null, temp;
  Object.keys(string)[0]
    .split("-0-")
    .reverse()
    .forEach(val => {
      if (output === null) {
        output = {};
        output[val] = Object.values(string)[0];
      } else {
        temp = [];
        temp.push(output);
        output = {}
        output[val] = temp;
      }
    });
    console.log(output);
0 голосов
/ 20 сентября 2019

Непонятно, что вы делаете, но кажется, что вы используете '-0-' в качестве разделителя.Работайте с чем-то вроде этого.

let string = {'user-0-residences-0-pincode': 678987};
let result = []
for (str in string) {
    result.push(str.split('-0-'))
}
...