Skip to content Skip to sidebar Skip to footer

Javascript Set Value At Multidimensional Array Where Dimensions Are Not Pre-defined

Let's say I have an empty 1D array: var data = []; Now, I want to add value of 1 to data[1][1][3]; To do this, I need to extend data array to: data = [ [], [], [[],[],[1]] ]

Solution 1:

this function might help you

var data = []

setData(false, [1, 1, 3])

functionsetData(value_, indexes_) {
  var currenLevelArr = data
  var len = indexes_.length// you can also use Foreach instead of  using forfor (var i = 0; i < len; i++) {
    if (currenLevelArr[indexes_[i]] === undefined) {
      if (i === len - 1) {
        // we meet the target
        currenLevelArr[indexes_[i]] = value_
      } else {
        currenLevelArr[indexes_[i]] = []
        currenLevelArr = currenLevelArr[indexes_[i]]
      }
    } elseif (Array.isArray(currenLevelArr[indexes_[i]])) {
      if (i === len - 1) {
        // we meet the target but//there is an extra dimension in the place//in which we want to set the value_console.error('something went wrong')
      } else {
        currenLevelArr = currenLevelArr[indexes_[i]]
      }
    } else {
      // the current position is filled with sth that we dont expect// if you want to replace the value ,you can add extra condition hereconsole.error('something went wrong')
    }
  }
}

console.log(data)

this is the way you can trace the nodes object

var nodes = [

  {id: "1", x: 0, y: 0 },
  {id: "1.1", x: 0, y: 0 },
  {id: "1.1.1", x: 0, y: 0 },
  {id: "1.2", x: 1, y: 0 },
  {id: "1.3", x: 0, y: 1 },
  {id: "1.4", x: 1, y: 1 },
  {id: "1.3.1", x: 0, y: 0 },
  {id: "1.3.2", x: 0, y: 1 }

];

data = [];

nodes.forEach(function(node_){

var indices = node_.id.split(".");
indices = indices.map(function(d_){ returnNumber(d_) - 1; })
setData(true, indices);

});

functionsetData(value_, indexes_) {
  var currenLevelArr = data
  var len = indexes_.lengthfor (var i = 0; i < len; i++) {
    if (currenLevelArr[indexes_[i]] === undefined) {
      currenLevelArr[indexes_[i]] = { value : undefined ,  subData : [] }
      if (i === len - 1) {
        currenLevelArr[indexes_[i]].value = value_ ;
      } else {
        currenLevelArr = currenLevelArr[indexes_[i]].subData;
      }
    } else  {
      if (i === len - 1) {
        currenLevelArr[indexes_[i]].value = 10 ;
      } else {
        currenLevelArr = currenLevelArr[indexes_[i]].subData
      }
    }
  }
}

functionshow(data , str="") {
  if(Array.isArray(data) ){
    for (var i = 0 ; i < data.length; i++ ) {
      if(data[i]) {
        if(data[i].value) {
          console.log(str + (i+1) + ": true" );
        } 
        show(data[i].subData , str + (i+1) + ",")
      }
    }
  }
}
show(data)
console.log(data);

Post a Comment for "Javascript Set Value At Multidimensional Array Where Dimensions Are Not Pre-defined"