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

JavaScriptで角括弧オブジェクトキーをネストされたオブジェクトに変換するにはどうすればよいですか?


JavaScriptでオブジェクト内のネストされたキーにアクセスする方法は2つあることを私たちは知っています。

たとえば、このオブジェクトを取り上げます-

const obj = {
   object: {
      foo: {
         bar: {
            ya: 100
         }
      }
   }
};

ネストされたプロパティ「ya」にアクセスまたは更新する必要がある場合は、-

のようにアクセスできます。

方法1-

obj['object']['foo']['bar']['ya']

または 方法2-

obj.object.foo.bar.ya

これらの両方の方法で、同じ目的地にたどり着きます。

Way 1で示されているように、ネストされたキーへのパスを文字列として受け取り、Way2で示されている表記に変換するJavaScript関数を作成する必要があります

このためのコードは-

になります
const obj = { "object[foo][bar][ya]": 100 };
const constructDotNotation = obj => {
   const keys = Object.keys(obj)[0].split('[').map(el => {
      return el.replace(']', '');
   });
   let res = {};
   keys.reverse().forEach(key => {
      if (Object.keys(res).length === 0){
         res[key] = obj[Object.keys(obj)[0]];
      }else{
         const temp = {};
         temp[key] = res;
         res = temp;
      };
   });
   return res;
};
console.log(JSON.stringify(constructDotNotation(obj), undefined, 4));

出力

そして、コンソールの出力は-

になります
{
   "object": {
      "foo": {
         "bar": {
            "ya": 100
         }
      }
   }
}

  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> &

  2. 文字列を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