javascript:当键模式由另一个数组占据时,如何向多维数组分配值

时间:2018-12-09 13:38:05

标签: javascript arrays multidimensional-array

我想创建一个接收三个参数“(数据 treeArray )”的js函数,并返回修改后的数据变量

data: is Multi-dimensional Array

例如:

var data = [ [ 'string', 'string' ,['string','string','string']],[ 'string', 'string' ],'string' ];  

另一个是

treeArray: is Single dimensional Array

例如:

var treeArray = [0,1,2]; 

下一个是

line: is String

例如:

“你好,我是字符串”

[为了更好地理解,请找到随附的接收数据变量和返回数据变量的屏幕截图:(其中将Line变量放置在treeArray引用的数据变量中,在这种情况下,treeArray为[0,1,2] 。因此,将行变量以这种方式放置在变量数据中,

data[0][1][2]="Hi, I m string"

考虑“ start_data”映像,其中要求将来自行数组“ Hi,I m字符串”的数据放入当前不存在的First数组的第二个位置的第三个元素中。

因此,我需要一个JS函数,该函数在第一个数组的第二个位置内创建第三个元素,并将数据“ Hi,I m string”放置到类似于“ final_data”图像的位置。] ImageAttached

2 个答案:

答案 0 :(得分:0)

尝试一下

function modifiedData(data, treeArray, line) {
    var dataToBeModified = data;
    for (var i = 0; i < treeArray.length - 1; i++) {
        dataToBeModified = dataToBeModified[treeArray[i]]
    }

    dataToBeModified[treeArray[treeArray.length-1]] = line;

}


var data = [ [ 'string', ['string', 'String'] ,['string','string','string']],[ 'string', 'string' ],'string' ];  
modifiedData(data, [0,1,2], 'Intekhab');
data;

enter image description here

答案 1 :(得分:0)

这将在需要时创建一个数组,并在末尾赋值

const defaultValue = (index, indexes, val) => index === indexes.length-1?val:[]

const modifyData = (data, indexes, val) => {
  const selected = indexes.reduce((obj, index) => obj[index] = obj[index] || defaultValue(index, indexes, val), data );
  return data;
}

modifyData(data, treeArray, 'hello');