【问题标题】:Array.push() not working return null array after pushArray.push() 在推送后不起作用返回空数组
【发布时间】:2020-02-13 05:23:31
【问题描述】:

我在我的迷你搜索系统中使用 Vue 项目,它的数据库是 firebase。我想知道这些是语言错误还是它的库错误。 Array.push() 无法正常工作的地方。

我只能显示屏幕截图,因为当我复制代码时它无法在其他复制中显示。

let trainVal1 = []
  for(let n in dataTrainingVal) {
    console.log({key: n, ...dataTrainingVal[n]})
    trainVal1.push({key: n, ...dataTrainingVal[n]})
    console.log(trainVal1)
  }

谢谢!

【问题讨论】:

  • 看起来数组没问题 - 你认为有什么问题?
  • 你应该显示dataTrainingVal结构,我不确定是对象还是数组
  • 我看起来很好,只要确保你做的正确,尝试使用console.log('MY ARRAY', trainVal1)而不是console.log(trainVal1)
  • 实际上,您的控制台日志语句证明数组推送工作正常 - 只是您稍后清空数组 - 控制台日志保留引用,然后您只会看到它为空。为了说服您使用副本console.log(array.slice())

标签: javascript firebase vue.js


【解决方案1】:

只需为{key: n, ...dataTrainingVal[n]} 创建一个对象,例如var obj = {key: n, ...dataTrainingVal[n]}。然后推一下。

var trainVal1 = []
  for(let n in dataTrainingVal) {
    var obj = {key: n, ...dataTrainingVal[n]}
    trainVal1.push(obj)
    console.log(trainVal1)
  }

也试试 var insted of let

【讨论】:

    【解决方案2】:

    你应该像下面这样改变你的代码

    let trainVal1 = []
      for(let n = 0; n < dataTrainingVal.length; n++) {
        console.log({key: n, data:dataTrainingVal[n]})
        trainVal1.push({key: n, data:dataTrainingVal[n]})
        console.log(trainVal1)
      }
    

    【讨论】:

      【解决方案3】:

      错误出现在展开运算符部分。我已将您的代码更新为可行的解决方案。

      let trainVal1 = []
      
      let dataTrainingVal = [1,2,3]
      
      for(let n in dataTrainingVal) {
          console.log(dataTrainingVal[n])
          trainVal1.push({key: n, val: dataTrainingVal[n]})
          console.log(trainVal1)
        }

      请注意:不要使用 for in 循环进行数组迭代。

      注意:for...in 不应用于迭代索引顺序很重要的数组。 Read More on MDN

      【讨论】:

        【解决方案4】:

        似乎工作正常...唯一缺少的部分是定义 dataTrainingVal。

             let trainVal = []
               let dataTrainingVal = {firstname: 'Pedro', lastName: 'Juan'}
               for(let n in dataTrainingVal) {
                  console.log({key: n, ...dataTrainingVal[n]})
                  trainVal.push({key: n, ...dataTrainingVal[n]})
                  console.log(trainVal)
               }
        

        o/p:

        (2) [{…}, {…}]

        0:{0:“P”,1:“e”,2:“d”,3:“r”,4:“o”,键:“名字”}

        1:{0:“J”,1:“u”,2:“a”,3:“n”,键:“lastName”}

        长度:2

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-06
          相关资源
          最近更新 更多