Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Phân tích chuỗi đệ quy thành đối tượng lồng nhau - JavaScript

Cho mảng chuỗi dạng x.y.x.y... (ví dụ: country.UK.level.1). Chuyển đổi thành đối tượng lồng nhau nhóm theo key.

Ví dụ đầu vào:

const arr = ["country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3"];

Kết quả mong đợi:

{
  "country": {
    "UK": { "level": ["1", "2", "3"] },
    "US": { "level": ["1"] }
  }
}

Mã thực hiện

const arr = ["country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3"];
const stringToObject = arr => {
  const obj = {};
  arr.forEach(str => {
    let curr = obj;
    let splitted = str.split('.');
    let last = splitted.pop();
    let beforeLast = splitted.pop();
    splitted.forEach(sub => {
      if (!curr.hasOwnProperty(sub)) curr[sub] = {};
      curr = curr[sub];
    });
    if (!curr[beforeLast]) curr[beforeLast] = [];
    curr[beforeLast].push(last);
  });
  return obj;
};
console.log(JSON.stringify(stringToObject(arr), undefined, 4));

Kết quả

{
  "country": {
    "UK": { "level": ["1", "2", "3"] },
    "US": { "level": ["1"] }
  }
}