1

I can't push Data[i] in array 2D pass loop with i = 0 but can't pass i = 1 it's say "TypeError: Cannot read property 'push' of undefined" 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]);
    }
}
Heretic Monkey
  • 11,687
  • 7
  • 53
  • 122
Mr.K
  • 46
  • 4
  • `dataS[i]` is not defined. You will have to initialize it. It will have only 1st element to begin with. – Sid Aug 31 '20 at 13:37
  • Length of `dataS` is 1 whereas length of `Data` is 2, so when `i` is 1, `dataS[i]` is `undefined` and you can't call `push()` method on `undefined`. That is what error message says: _Cannot read property 'push' of undefined_ – Yousaf Aug 31 '20 at 13:38

1 Answers1

2

Initialize it if it does not have a value

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)
hgb123
  • 13,869
  • 3
  • 20
  • 38