在为一种简单的语言构建 JavaScript 解释器的过程中,我遇到了以下问题;
解析后得到一个索引数组,指定n维数组中要修改的元素。例如,解析后:
a[1, 1, 1]
我们得到一个数组[1, 1, 1]
。我正在使用的语言没有变量定义,因此变量在第一次使用时会被初始化。我的目标是能够创建这个 n 维数组,以便我可以将它放在变量表中(在上面的示例中,我们需要创建一个 3 维数组)。
简短的问题:
有没有办法在 JavaScript 中不使用eval()
创建一个 n 维数组?
最佳答案
在 Chrome 中测试:
function createNDimArray(dimensions) {
if (dimensions.length > 0) {
var dim = dimensions[0];
var rest = dimensions.slice(1);
var newArray = new Array();
for (var i = 0; i < dim; i++) {
newArray[i] = createNDimArray(rest);
}
return newArray;
} else {
return undefined;
}
}
然后 createNDimArray([3, 2, 5])
返回一个 3x2x5 数组。
您可以使用类似的递归过程来访问索引在数组中的元素:
function getElement(array, indices) {
if (indices.length == 0) {
return array;
} else {
return getElement(array[indices[0]], indices.slice(1));
}
}
设置元素类似,留给读者作为练习。
关于JavaScript; n维数组创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588618/