javascript - 如何从 JavaScript 中的函数将值设置为 n 维数组?

标签 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);

最佳答案

您的函数无法按设计工作,它需要每个维度都有一个索引

您需要类似以下内容 http://jsfiddle.net/nZmJT/1/

function setValueInArray(arr, value, index /*, index, index, ... */ ) {
    var arrToSet = arr;
    for (var i = 2; i < arguments.length - 1; i++) {
       arrToSet = arr[arguments[i]];
    }
    arrToSet[arguments[i]]= value;
    return arr;
}


var v1 = [1,2,3];
var v2 = [[1,2],[3,4]];

console.log( setValueInArray(v1, 0, 0) ); // [0,2,3]
console.log( setValueInArray(v2, 0, 0, 0) ); //[[0,2],[3,4]]

请与我们分享您为什么喜欢这个。我想不出可以推广到处理多个维度的代码,您通常知道维度,然后将其设置为...

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);

关于javascript - 如何从 JavaScript 中的函数将值设置为 n 维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058715/

相关文章:

c - 如何在 C 中使用二维指针数组来存储字符串?

PHP/MYSQL session - 打印当前用户名

java - 如何将我的随机值放入java中的数组中?

c++ - cout<<endl;不适用于打印二维数组

javascript - 通过浏览器将json写入本地文件

javascript - 404 未找到加密值

javascript - 如何创建多个图像预览

javascript - 用于配置 Selenium 访问 JavaScript 控制台的 Ruby 代码

javascript - 使用javascript查找css自动高度值

c - 字符数组初始化产生段错误