Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从JavaScript中的函数将值设置为n维数组?_Javascript_Arrays - Fatal编程技术网

如何从JavaScript中的函数将值设置为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

从函数中设置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 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);