【问题标题】:TypeError: Cannot read property 'push' of undefined(Array 2D) [duplicate]TypeError:无法读取未定义的属性“push”(Array 2D)[重复]
【发布时间】:2020-12-19 15:14:18
【问题描述】:

我无法在二维数组中推送 Data[i] 通过 i = 0 的循环但不能通过 i = 1 它说“TypeError:无法读取未定义的属性'push'” Error pic

var dataS = [[]];
var Widget = ['',''];
var Data = ['1234','4321'];
for (var i=0; i<Data.length; i++){
    console.log("Widget : "+Widget[i]);
    console.log("i : "+i);
    console.log("Data["+i+"] : "+Data[i]);
    console.log("dataS[["+i+"]] : "+dataS[[i]]);
    if (Widget[i] === ""){

        dataS[i].push(Data[i]);
    }
}

【问题讨论】:

  • dataS[i] 未定义。您将不得不对其进行初始化。它将只有第一个元素开始。
  • dataS 的长度是 1,而 Data 的长度是 2,所以当 i 是 1 时,dataS[i]undefined 并且你不能调用 push() 方法undefined。这就是错误信息所说的:Cannot read property 'push' of undefined

标签: javascript arrays


【解决方案1】:

如果没有值则初始化

if (Widget[i] === "") {
  dataS[i] = dataS[i] || []
  dataS[i].push(Data[i])
}

var dataS = [[]]
var Widget = ["", ""]
var Data = ["1234", "4321"]
for (var i = 0; i < Data.length; i++) {
  console.log("Widget : " + Widget[i])
  console.log("i : " + i)
  console.log("Data[" + i + "] : " + Data[i])
  console.log("dataS[[" + i + "]] : " + dataS[[i]])
  if (Widget[i] === "") {
    dataS[i] = dataS[i] || []
    dataS[i].push(Data[i])
  }
}

console.log(dataS)

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 2022-09-27
    • 2021-03-18
    • 2020-12-07
    • 2017-03-09
    • 1970-01-01
    • 2014-09-07
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多