我想创建一个接收三个参数“(数据, 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
答案 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;
答案 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');