JavaScript; n维数组创建

标签 javascript arrays

在为一种简单的语言构建 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/

相关文章:

javascript - Catch 无法读取 null 的属性

javascript - 有没有办法将 jquery 映射文本从字符串转换为 json?

javascript - Angular 单元测试类型错误: Cannot read property 'subscribe' of undefined

C++ 按字母顺序向列表中添加元素

arrays - 为什么在创建嵌套结构数组时不能使用短数组构造函数语法?

Javascript:点击事件处理程序不起作用

javascript - JavaScript : SyntaxError: missing '}' after argument list

c - 将数组从函数传递到 main

c# - IEnumerable<T> ToArray 用法 - 它是副本还是指针?

c# - 在 C# 中转换/移植 PDWORD 代码