收藏
回答

js多维对象定义


遇到了这样的设计需求,多维对象,且属性名为数字,用变量就定义失败,不用变量就行。当year、month、day为变量的时候就无法定义

最后一次编辑于  02-12  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • 黎😄
    黎😄
    02-12

    你对js数组对象是不是有什么错误理解?

    {

        year:2019

    }

    这样的year只是一个下标,跟

    {

        ‘year’:2019

    }

    是一样的,这里的year不会是一个变量,只是对象中的下标,或者属性。

    若想把year变成变量那样,可以使用析构符号,

    {

        [`${year}`]:2019

    }

    或者

    {

        [year]:2019

    }

    02-12
    赞同 2
    回复 2
    • 什么什么黑啊
      什么什么黑啊
      02-12

      是的,我没有理解透彻 ,请问您在哪里看到的这番定义?我这样写成功了,我想去看看具体的说明,重新学习下!万分感谢大神指教!

      02-12
      回复
    • 黎😄
      黎😄
      02-12回复什么什么黑啊

      https://segmentfault.com/a/1190000010159725

      02-12
      回复
  • deRek
    deRek
    02-12

    额, 你没理解Rimifon说的, 其实用[]就好了.{[y]:{[m]:{[d]:{now}}}}

    02-12
    赞同 1
    回复 1
    • 什么什么黑啊
      什么什么黑啊
      02-12

      是我没有理解,您的答案也是正解!!!!万分感谢

      02-12
      1
      回复
  • hi
    hi
    02-12

    mark

    02-12
    赞同
    回复
  • 后米米米米
    后米米米米
    02-12

    我这边试了下,没有问题啊


    02-12
    赞同
    回复 9
    • 什么什么黑啊
      什么什么黑啊
      02-12

      有问题,我的year=2019,month=2,变量没有转化为数字……

      02-12
      回复
    • 后米米米米
      后米米米米
      02-12回复什么什么黑啊

      这样子,刚好以前看到过。(看看是不是这个)略微有点复杂


      02-12
      回复
    • 什么什么黑啊
      什么什么黑啊
      02-12回复后米米米米

      对对对,就是要这样,一定要逐个声明然后定义么?就不能用我那样的方式,直接定义?

      02-12
      回复
    • 后米米米米
      后米米米米
      02-12回复什么什么黑啊

      要用[]包住变量的,你试试看。我没试过不清楚

      02-12
      回复
    • 什么什么黑啊
      什么什么黑啊
      02-12回复后米米米米

      我试过,count【year】【month】【day】={“now”:wors}不行……

      02-12
      回复
    查看更多(4)
  • Rimifon
    Rimifon
    02-12

    var m = new Date().getMonth();

     var obj = { [m] : m };

     console.log(obj);

    02-12
    赞同
    回复 3
    • 什么什么黑啊
      什么什么黑啊
      02-12

      一个维度的没问题,可以obj【变量名】,问题是多维……,obj【year】【month】【day】不行啊

      02-12
      回复
    • Maverick
      Maverick
      02-12回复什么什么黑啊

      你给undefined设置下标当然不行。。。


      obj = {[year]:{[month]:{[day]:{now:123}}}}

      02-12
      1
      回复
    • 什么什么黑啊
      什么什么黑啊
      02-12回复Maverick

      正解,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!

      02-12
      回复