Javascript:访问对象内部的数组

Javascript:访问对象内部的数组,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我在object elementMatrix中有一个数组cornerId。此后,我想创建elemArray,它是对象elementMatrix的数组。但是,我无法访问cornerId的值 我想为数组cornerId的第n个位置赋值和访问值,它是elemArray的一部分,Elemaray是object elementMatrix的数组。有人能告诉我访问cornerId值的正确方法吗 编辑: 为了澄清,我想在第n个位置添加cornerId,覆盖现有值,而不是推送它。我最初也没有问过这个问题,但如果

我在object elementMatrix中有一个数组cornerId。此后,我想创建elemArray,它是对象elementMatrix的数组。但是,我无法访问cornerId的值

我想为数组cornerId的第n个位置赋值和访问值,它是elemArray的一部分,Elemaray是object elementMatrix的数组。有人能告诉我访问cornerId值的正确方法吗

编辑:


为了澄清,我想在第n个位置添加cornerId,覆盖现有值,而不是推送它。我最初也没有问过这个问题,但如果有一种方法可以从cornerId中删除第n个位置,那就太好了。

首先,不要将数组初始值设定项与新的数组使用[]一起使用;参见道格拉斯·克罗克福德对此的辩护

function elementMatrix() {
    var cornerId=[];
    return {
        cornerId: cornerId
    };
}
var elemArray=[];
elemArray.push(elementMatrix());
elemArray[0].cornerId.push("z");
elemArray[0].cornerId.push("a");
alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);

首先,不要将数组初始值设定项与新数组use[]一起使用;参见道格拉斯·克罗克福德对此的辩护

function elementMatrix() {
    var cornerId=[];
    return {
        cornerId: cornerId
    };
}
var elemArray=[];
elemArray.push(elementMatrix());
elemArray[0].cornerId.push("z");
elemArray[0].cornerId.push("a");
alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);

用这个来定义你的角落,按数组。。。。像这样

function elementMatrix() {
    this.cornerId = [];
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix.cornerId.push('z');
newMatrix.cornerId.push('a');
elemArray.push(newMatrix);

alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);
function elementMatrix() {
    var cornerId = {};
    var nextKey = 0;

    return {
        addCornerId: function(id, key) {
            if(!key && key !== 0) {
                key = nextKey;
            }
            cornerId[key] = id;
            nextKey++;
            return this;
        },

        removeCornerId: function(key) {
            if(cornerId[key]) {
                  delete cornerId[key]
            }

            return this;
        },
        getCornerId: function(key) {
            if(cornerId[key]) {
                return cornerId[key];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a')
    .addCornerId('XXX', 0)
    .addCornerId('YYYY', 'abc');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId('abc'));
或者,您可以将您的cornerid设置为私有,并返回公共方法,如add is fluent

function elementMatrix() {
    var cornerId = [];

    return {
        addCornerId: function(id) {
            cornerId.push(id);
            return this;
        },

        getCornerId: function(pos) {
            if(cornerId.length >= pos) {
                return cornerId[pos];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId(1));
编辑,如果您想要一个键值对,请使用一个对象,而不是像这样的数组

function elementMatrix() {
    this.cornerId = [];
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix.cornerId.push('z');
newMatrix.cornerId.push('a');
elemArray.push(newMatrix);

alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);
function elementMatrix() {
    var cornerId = {};
    var nextKey = 0;

    return {
        addCornerId: function(id, key) {
            if(!key && key !== 0) {
                key = nextKey;
            }
            cornerId[key] = id;
            nextKey++;
            return this;
        },

        removeCornerId: function(key) {
            if(cornerId[key]) {
                  delete cornerId[key]
            }

            return this;
        },
        getCornerId: function(key) {
            if(cornerId[key]) {
                return cornerId[key];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a')
    .addCornerId('XXX', 0)
    .addCornerId('YYYY', 'abc');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId('abc'));

用这个来定义你的角落,按数组。。。。像这样

function elementMatrix() {
    this.cornerId = [];
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix.cornerId.push('z');
newMatrix.cornerId.push('a');
elemArray.push(newMatrix);

alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);
function elementMatrix() {
    var cornerId = {};
    var nextKey = 0;

    return {
        addCornerId: function(id, key) {
            if(!key && key !== 0) {
                key = nextKey;
            }
            cornerId[key] = id;
            nextKey++;
            return this;
        },

        removeCornerId: function(key) {
            if(cornerId[key]) {
                  delete cornerId[key]
            }

            return this;
        },
        getCornerId: function(key) {
            if(cornerId[key]) {
                return cornerId[key];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a')
    .addCornerId('XXX', 0)
    .addCornerId('YYYY', 'abc');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId('abc'));
或者,您可以将您的cornerid设置为私有,并返回公共方法,如add is fluent

function elementMatrix() {
    var cornerId = [];

    return {
        addCornerId: function(id) {
            cornerId.push(id);
            return this;
        },

        getCornerId: function(pos) {
            if(cornerId.length >= pos) {
                return cornerId[pos];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId(1));
编辑,如果您想要一个键值对,请使用一个对象,而不是像这样的数组

function elementMatrix() {
    this.cornerId = [];
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix.cornerId.push('z');
newMatrix.cornerId.push('a');
elemArray.push(newMatrix);

alert(elemArray[0].cornerId[0]);
alert(elemArray[0].cornerId[1]);
function elementMatrix() {
    var cornerId = {};
    var nextKey = 0;

    return {
        addCornerId: function(id, key) {
            if(!key && key !== 0) {
                key = nextKey;
            }
            cornerId[key] = id;
            nextKey++;
            return this;
        },

        removeCornerId: function(key) {
            if(cornerId[key]) {
                  delete cornerId[key]
            }

            return this;
        },
        getCornerId: function(key) {
            if(cornerId[key]) {
                return cornerId[key];
            }

            return null;
        }
    };
};
var elemArray = [];
var newMatrix =new elementMatrix();
newMatrix
    .addCornerId('z')
    .addCornerId('a')
    .addCornerId('XXX', 0)
    .addCornerId('YYYY', 'abc');
elemArray.push(newMatrix);

alert(elemArray[0].getCornerId(0));
alert(elemArray[0].getCornerId('abc'));

这是一个很快很好的回答。只有一个清晰之处是,有一种方法可以将元素添加到第n个位置,而不是将其推到最后。我可以将elemArray[0]第n个cornerId位置的值推送到覆盖位置吗。我对我的问题进行了编辑,以使其更加清晰。当然可以,但由于您正在更改特定位置的值,因此这不称为推送。myArray[index]=newvalue就可以了。看一看,哦,这是多么令人尴尬的简单。我的印象是我试过这种方法,但它不起作用。这是一个很快很好的答案。只有一个清晰之处是,有一种方法可以将元素添加到第n个位置,而不是将其推到最后。我可以将elemArray[0]第n个cornerId位置的值推送到覆盖位置吗。我对我的问题进行了编辑,以使其更加清晰。当然可以,但由于您正在更改特定位置的值,因此这不称为推送。myArray[index]=newvalue就可以了。看一看,哦,这是多么令人尴尬的简单。我的印象是我试过这种方法,但它不起作用。吨