我在对象cornerId
中有一个数组elementMatrix
。此后,我想创建elemArray
,它是对象elementMatrix
的数组。但是,我无法访问cornerId
的值。
function elementMatrix() {
var cornerId=new Array();
}
var elemArray=new Array();
elemArray[0]=new elementMatrix();
elemArray[0].cornerId[0]="z"; //if I put elemArray[0].cornerId="z"; then it works for the first element - but then how do I put second element???
elemArray[0].cornerId[1]="a";
alert(elemArray[0].cornerId[0]); // shows undefined
alert(elemArray[0].cornerId[1]); //again undefined
....
Add other elemArray values
....
我想为数组cornerId
的第n个位置分配值和访问值,这是elemArray
的一部分,它是一个对象elementMatrix
的数组。任何人都可以告诉我访问cornerId
值的正确方法???
修改:
澄清我希望自由在第n个位置添加cornerId(覆盖现有值)而不是推它。另外我最初没有问过这个问题,但是如果有一种方法可以从cornerId中删除第n个位置,那么这将很棒。
答案 0 :(得分:3)
用这个来定义你的角落,推送数组....就像这样
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]);
或者你可以将你的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() {
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'));