如何从JavaScript中的函数将值设置为n维数组?
从函数中设置n维数组的最佳方法是什么如何从JavaScript中的函数将值设置为n维数组?,javascript,arrays,Javascript,Arrays,从函数中设置n维数组的最佳方法是什么 var v1 = [1,2,3]; var v2 = [[1,2],[3,4]]; // only valid for 1-dimension function set(arr, dim, v) { arr[dim] = v; } set(v1, 2, 33); 您的函数无法按设计工作,它需要为每个维度创建索引 你需要像下面这样的东西 因为在您的情况下,您不知道要传递多少个索引(否则您只需要使用括号访问),所以下面可能更适合 function
var v1 = [1,2,3];
var v2 = [[1,2],[3,4]];
// only valid for 1-dimension
function set(arr, dim, v) {
arr[dim] = v;
}
set(v1, 2, 33);
您的函数无法按设计工作,它需要为每个维度创建索引 你需要像下面这样的东西 因为在您的情况下,您不知道要传递多少个索引(否则您只需要使用括号访问),所以下面可能更适合
function setValueInArray(arr, value, indexes) {
var arrToSet = arr;
for (var i = 0; i < indexes.length - 1; i++) {
arrToSet = arr[indexes[i]];
}
arrToSet[indexes[i]] = value;
return arr;
}
是否要为所有元素指定相同的值?如果它是n维的,则需要n个索引来设置特定元素。但是在该维度上有多个元素,您需要指定要修改的索引。也就是说,对于一维,你只需要一个索引,对于二维,你需要两个索引,依此类推,就像我说的,你需要n个索引。对于像示例中的2d数组,您需要2个索引。是的,它们可以传递到数组:set(v2[0,2],22),但是如何从参数传递?+1,尽管我会在“未知索引”情况下为不存在的索引添加一个数组生成器。这是一个复杂函数的一部分,但它的功能之一是用初始值初始化n维数组。谢谢@是的,你是对的。但我并不担心边缘情况,只是指导OP如何实现他们所需要的,噪音越小越好,IMHO。@Marc:如果你已经有了初始化n维对象的功能,你应该熟悉使用的代码机制,并且能够轻松地集成它。
v1[2][3] = 'anything';
function setValueInArray(arr, value, indexes) {
var arrToSet = arr;
for (var i = 0; i < indexes.length - 1; i++) {
arrToSet = arr[indexes[i]];
}
arrToSet[indexes[i]] = value;
return arr;
}
setValueInArray(v1, 0, indexes);