收藏
回答

数组push和concat 追加时,各种乱结果,都没办法预测结果,乱套,请问这结果如何解释?


最后一次编辑于  11-25
回答关注问题邀请回答
收藏

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    11-25

    a.push操作,就是往a里放东西,返回的是最终a的长度

        a = [2]

        c = a.push(3) // c为2,a变为[2,3]


    a.concat操作,a本身不会变,返回a的副本拼接后的内容

        a = [2]

        b = a.concat(5) // b为[2,5],a还是[2]


    另外,字符串和数组都可以使用concat方法

    11-25
    赞同 1
    回复 12
    • 峰顶
      峰顶
      11-25
      这个我懂,你看下我的截图,我在第一次push之后,看到的结果应该是3个对象,你看执行输出的部分,看的是4个对象(这是最终的效果),怎么解释??
      11-25
      回复
    • 峰顶
      峰顶
      11-25回复峰顶
      我第一次只做了push,并没有修改任何数组中的任何数字
      11-25
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-25回复峰顶
      就好比你口袋原来有1块钱,在你睡觉的时候别人给你口袋里塞了1个亿,难道你打开口袋看还是1块钱?如果还是1块钱,那说明是你在做梦,如果是1亿零1块,那说明不是在做梦,如果连1毛钱也没了,说明被小偷偷走了
      11-25
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-25回复峰顶
      你push了,就是修改 onearr 的数据啦
      11-25
      回复
    • 峰顶
      峰顶
      11-25
      哥,你再看看,我是push了,我是修改了,但按照执行的代码逻辑看,第一次输出的应该是3个对象,而不是4个,执行console("第er次")的时候,才是输出4个对象,你再看下我的代码,就看到console(“第一次”)输出那里,后面暂时不用看,另外你看下我刚有发了一个截图,这是在我开发中遇到的,都是无法解释通
      11-25
      回复
    查看更多(7)
  • 👀
    👀
    11-26

    console.log几乎是异步的

    11-26
    赞同
    回复 3
    • 峰顶
      峰顶
      11-26
      这个得分情况了,比如 
      var a=1;
          console.log(a)
          a=2
          console.log(a)
      这个就是 输出1 和2
      只有碰到对象什么的,就是引用地址空间的时候, 效果看起来像是异步的,只能说在对象这种类型的结构中,打印的速度没有修改内存数据的快,即使你打印的代码在前面。
      11-26
      回复
    • 西赛德李
      西赛德李
      11-26回复峰顶
      我需要特别精确的时候,一般用 console.log(JSON.parse(JSON.stringify(obj)))
      11-26
      1
      回复
    • 峰顶
      峰顶
      11-26回复西赛德李
      正解,我正在用这个方法
      11-26
      回复
  • 峰顶
    峰顶
    11-25

    我为什么做这个小实验呢,因为我在实际开发中真遇到这个无法解释的坑,请看下面

    1.我在push前里面有 3 和5 JPG 图片,然后我再push 2.jpg,奶奶的胸,正常结果,应该是3 5 2.jpg,结果却是 3,2,2 jpg,搞的我一脸懵逼,简化了很多,还是无法解释


    11-25
    赞同
    回复 7
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-25
      11-25
      回复
    • 峰顶
      峰顶
      11-26回复o0o有脾气的酸奶
      我是有两个数组,分别是customContentDatabase 和customContent,customContent里有 [{imageSetting:3},{imageSetting:5}],我从customContentDatabase[1]取出 {imageSetting:2},然后customContent push 这个  {imageSetting:2},结果不应该是 3 5 2 吗??
      11-26
      回复
    • 峰顶
      峰顶
      11-26
      customContent 数组在初始化的时候,默认就只有[{imageSetting:3},然后我保存了{imageSetting:5}],结果是[{imageSetting:3},{imageSetting:5}] 符合预期,但是我在push {imageSetting:2}的时候,就变成 3 2 2 了,也就是凡是我通过保存push进去的,都会变成最后一次保存的内容,初始化的3是不会变化的
      11-26
      回复
    • 峰顶
      峰顶
      11-26
      这个结果看起来是不是特别怪异,我无法理解
      11-26
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-26回复峰顶
      两个数组应该没问题啊
      https://developers.weixin.qq.com/s/jStrK9my7vdY
      11-26
      回复
    查看更多(2)
问题标签