开发者问题收集

Javascript 与 PHP 中的动态多维对象

2019-07-17
134

PHP 中我们可以轻松做到这一点

<?php

$arr['layer1']['layer2'] = "value"; // works fine in PHP

返回:

 Array(
  [layer1] => Array(
    [layer2] => "value"
  )
)

此代码可以正常工作,因为 php 中不需要变量声明
但在 Javascript 中变量声明是必须的。

因此,这在 Javascript 中不起作用

var obj['layer1']['layer2'] = "value"; // doesn't work on JS

// sorry I can't use the code below
var obj = {};
obj['layer1'] = {};
obj['layer1']['layer2'] = "value";

// I can't use this also
var obj = {
  "layer1" : {
     "layer2" : "value"
  }
};

Uncaught TypeError: Cannot set property 'layer2' of undefined

我无法使用此代码,因为我需要 动态 创建一个对象。并且其中没有固定键甚至固定层。因此, 我需要一些可以完全像 PHP 一样工作的东西

2个回答

您是否要覆盖 obj 变量?然后您可以使用以下命令。

var object = {
      layer1: {
            layer2: 'value2'
      }
};

object = {
      ...object, ...{
            layer3: {
                  layer4: 'value4'
            }
      }
}

console.log(object)
Parshav Shah
2019-07-17

定义外部对象,其中它的一个值的值是另一个对象,依此类推第四个:

var obj = {
  layer1: {
    layer2: 'value'
  }
};

console.log(obj.layer1.layer2);
Snow
2019-07-17