Computer >> Máy Tính >  >> Lập trình >> Javascript

Phân tích cú pháp chuỗi đệ quy thành đối tượng - JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng chuỗi và trả về một đối tượng tương ứng với các chuỗi đó.

Ví dụ -

Nếu mảng là -

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

Sau đó, đầu ra phải là -

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

Điều kiện

Các chuỗi được lưu trữ trong mảng str sẽ không được sắp xếp và mã phải chắc chắn để chống lại điều đó.

Các chuỗi sẽ tuân theo mẫu x.y.x.y ..., trong đó x sẽ là duy nhất cho mảng đó và y có thể thay đổi. Trong ví dụ của tôi, quốc gia và cấp sẽ luôn giống nhau vì chúng đại diện cho vị trí x.

Điều này yêu cầu cách tiếp cận đệ quy vì các chuỗi được lưu trữ trong mảng str, có thể có độ dài bất kỳ. Chuỗi càng dài thì lồng càng sâu.

Ví dụ

Sau đây là mã -

 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)); 

Đầu ra

Điều này sẽ tạo ra kết quả sau trên bảng điều khiển -

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