我有一个对象数组:
function focal( name, data )
{
this.name = name;
this.data = data;
}
count = 0;
arrayFocal = [];
arrayFocal[ count ] = new focal( "James", "12/08/2014" );
count++;
现在我想修改相同的值,如下所示:
arrayFocal[ 0 ].name = "Jhon";
或
arrayFocal[ 0 ][ 'name' ] = "Jhon";
但是它返回一个错误:未捕获的TypeError:无法设置未定义的属性'name'
那个人可以帮助我吗?
答案 0 :(得分:2)
因为你的数组有两个元素,但你的最大索引是1.如果你想访问第二个元素use arrayFocal[ 1 ] not arrayFocal[ 2 ]
请记住,数组索引从0开始。
答案 1 :(得分:2)
您正在尝试访问不存在的索引arrayFocal[ 2 ].name = "New Name";
尝试访问索引 0 来执行此操作,或使用计数器来做得更好。
arrayFocal[0].name = "New Name"
答案 2 :(得分:1)
如果数组中某个位置没有对象,则需要先创建它,即:
arrayFocal[2] = {name: 'John', data: 'something'};
编辑:
这是JSFiddle http://jsfiddle.net/q4V6w/1/
答案 3 :(得分:1)
试试这个:)
function focal( name, data )
{
this.name = name;
this.data = data;
}
count = 0;
arrayFocal; // considering this is the array you want to modify
for (i=0; i < arrayFocal.length; i++) { // iterates the current array and replace the values with the properties
arrayFocal[i] = new focal( "James", "12/08/2014" );
}
答案 4 :(得分:1)
数组都是从0开始编入索引的,所以为了从你的问题中查找数组中唯一的元素,你需要调用arrayFocal[0]
要完成你想要的,你可以做到
arrayFocal[0].name = "Jhon";
它告诉你,你正在访问的是未定义的,因为你正在调用的索引中的数组中几乎没有元素。