如何修改对象数组的值

时间:2014-08-04 17:51:38

标签: javascript arrays

我有一个对象数组:

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'
那个人可以帮助我吗?

5 个答案:

答案 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";

它告诉你,你正在访问的是未定义的,因为你正在调用的索引中的数组中几乎没有元素。