JavaScript对象数组 - 第0个元素未定义但stringify显示对象

时间:2013-02-26 21:49:36

标签: javascript backbone.js

我从backbone.js中拉出一个对象,当我对该对象进行字符串化时,我看到了字符串文字

'[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}]'

但是,当我将非序列化对象分配给变量并尝试访问第0个元素时,我得到了未定义。我希望得到对象

{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}

JavaScript没有处理

[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}] 

作为对象的索引数组?

2 个答案:

答案 0 :(得分:1)

要按索引访问Backbone.Collection的元素,请使用Collection#at方法:

var first = collection.at(0);

或者,你可以使用Collection#first方法,它实际上是underscore库的一部分,但是代理了Backbone集合的语法糖:

var first = collection.first();

您在序列化JSON中看到数组表示的原因是按照约定JSON.stringify在您为其提供字符串化的对象上查找名为toJSON的方法,如果找到一个,将改为使用该方法的返回值。 Collection#toJSON的实现返回集合内部模型数组的克隆,因此JSON输出是一个数组。

答案 1 :(得分:0)

刚试过

var arr = JSON.parse( '[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}]' );

console.log( arr[0] ); // => object

你所描述的应该有用。