Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

オブジェクトへの再帰的な文字列解析-JavaScript


文字列の配列を受け取り、文字列に対応するオブジェクトを返すJavaScript関数を作成する必要があります。

例-

配列が-

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

その場合、出力は-

になります。
const output = {
   "country": [
       {"UK" : {"level" : ["1", "2", "3"]}},
       {"US" : {"level" : ["1","2"]}}
  ]
}

条件

str配列に格納されている文字列は並べ替えられないため、コードはそれに対して堅牢である必要があります。

文字列はx.y.x.y...パターンに従います。ここで、xはその配列に対して一意であり、yは変更できます。私の例では、国とレベルは常にx位置を表すのと同じになります。

str配列に格納されている文字列は任意の長さにすることができるため、これには再帰的なアプローチが必要です。弦が長いほど、入れ子が深くなります。

以下はコードです-

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

出力

これにより、コンソールに次の出力が生成されます-

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

  1. 文字列をJavaScriptオブジェクトに変換する方法は?

    以下は、文字列をJavaScriptオブジェクトに変換するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &nbs

  2. JavaScriptで配列の配列をオブジェクトに変換する

    このようなクリケット選手のパフォーマンスを含む配列の配列があるとします- const arr = [    ['Name', 'V Kohli'],    ['Matches', 13],    ['Runs', 590],    ['Highest', 183],    ['NO', 3],    ['SR', 131.5] ]; このような配列の配列を1つ取り