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

Преобразование строк точечной записи в объекты массива, например,

let obj = { 'user-0-address-pincode': 665766, 'user-0-address-city': 'Chennai', 'user-1-address-pincode': 32432, 'user-1-address-city': 'Bangalore'};

// Expectation output will be
{
 user: [ 
   {
     address: {pincode: 665766, city: 'Chennai'}
   },
   {
     address: {pincode: 32432, city: 'Bangalore'}
   }
 ]
}

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

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

Вы можете использовать методы reduce и split для создания функции, которая будет принимать ваш объект с ключами в качестве путей, а затем на основе этих ключей создавать вложенную структуру.

let obj = {
  'user-0-address-pincode': 665766,
  'user-0-address-city': 'Chennai',
  'user-1-address-pincode': 32432,
  'user-1-address-city': 'Bangalore'
};

function parse(data) {
  return Object.keys(obj).reduce((r, k) => {
    k.split('-').reduce((a, e, i, arr) => {
      const next = arr[i + 1]
      if (!next) return a[e] = data[k]
      else return a[e] || (a[e] = (!isNaN(+next) ? [] : {}))
    }, r)

    return r;
  }, {})
}

const result = parse(obj)
console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...