如何在javascript中使用二维数组实现原型函数



我需要实现数据表结构,即在c#中,在javascript中。例如

function Servers(name)
 {
    this.Name = name;
    this.Columns = new Array(5);
    var rows = new Array(3);
    for (var i=0;i<3;i++)
        rows[i]=new Array(5);
    this.Rows = rows;
 }

我只是通过这样输入来访问第I行中的第j个元素;

Servers.Rows[i][j]

这很好,但我需要这样调用我的对象;

Servers.Rows[i]["ServerUrl"]

但是我不知道如何实现这个工作的原型。有办法实现这一点吗?

现场演示

 function create2Array(d1, d2, fn) {
    var arr = [],
        d = function(x, y) {},
        f = fn || d;
    for (var i = 0; i < d1; i++) {
        for (var j = 0, curr = []; j < d2; j++) {
             curr[j] = f.call(window, i, j); 
        };
        arr[i] = curr;
    };
    return arr;
};
function createArrayOfObjects(d1) {
    var arr = [];
    for (var i = 0; i < d1; i++) {
        arr[i] = {};
    };
    return arr;
};

function print2DArray(arr) {
    document.body.innerHTML += "<p><b>Array:</b></p>";
    for (var i = 0, len = arr.length; i< len; i++) {
        document.body.innerHTML += "<p><b>" + i + "</b>: " + arr[i].join(" ") + "</p>";
    };
};

function printArrayOfObj(arr) {
    document.body.innerHTML += "<p><b>Array:</b></p>";
    for (var i = 0, len = arr.length; i< len; i++) {
        document.body.innerHTML += "<p><b>" + i + "</b>: " + JSON.stringify(arr[i]) + "</p>";
    };
};
var Server = {};
Server.Rows = createArrayOfObjects(10);
Server.Rows[0]["something"] = "test";
printArrayOfObj(Server.Rows);

像这样使用:

Server.rows = create2Array(10, 10);

或者您甚至可以指定一个自定义init函数,该函数将索引作为参数。如果你想初始化矩阵默认值为0:

Server.rows = create2Array(10, 10, function(x, y) { return 0;});

或者如果你使用一个对象。

Server.rows = create2Array(10, 10);
Server.rows[0]["ServerUrl"] = "test";

您应该使用散列/对象。

如果你想在javascript中通过名称/字符串引用数据结构中的变量,an对象是最好的选择。详见:https://developer.mozilla.org/en/docs/JavaScript/Guide/Working_with_objects

相关内容

  • 没有找到相关文章