我在使用JavaScript创建包含对象的列表时遇到问题:该对象将包含一个Integer值和一个数组。
结构将如下所示(此代码有效):
var list = [ {
id : 1234,
dependencyList : [ {
id : 2142
}, {
id : 5313
} ]
}, {
id : 4312,
dependencyList : [ {
id : 2142
}, {
id : 5313
} ]
} ];
问题是我想动态创建这个列表,换句话说就是这样:
var list = [];
var object;
object.id=1234;
object.dependencyList = [];
object.dependencyList.push(2222);
list.push(object);
当我尝试alert(list[0].length)
并且它返回0并且在使用JSON.stringify(list)之后它只返回[[]]
时,此代码不起作用。
任何人都知道这方面的解决方案吗?
答案 0 :(得分:1)
list[0]
是一个对象,而不是一个数组,这就是为什么你没有看到length
的任何内容。尝试:
console.log(Object.keys(list[0]).length);
或者您甚至可以console.log(list[0])
并检查您的控制台以确保它包含某些内容。
另外,我认为你的意思是:
var object = {};
因为否则object
为undefined
,您的脚本将无效。你需要改变的另一件事是:
object.dependencyList.push(2222);
为:
object.dependencyList.push({id: 2222});
答案 1 :(得分:1)
未定义对象。做:
var object = {};
答案 2 :(得分:0)
你应该做list[0].dependencyList.length)
你也应该改变:
object.dependencyList.push(2222);
对于
object.dependencyList.push({id: 2222});
答案 3 :(得分:0)
对象是你的朋友。
如果你需要创建很多这些东西,你应该定义它们在函数中的形状。这样做的一个优点是,您可以创建一个用于添加依赖项的setter,该依赖项将实现隐藏为对特定成员变量的推送。
这样的事情:
function createObject( id ) {
var object = {};
object.id = id;
return object;
}
function createObjectWithDependencies( id ) {
var object = createObject( id );
object.dependencyList = [];
object.addDependency = function( dependentObject ) {
object.dependencyList.push( dependentObject );
}
return object;
}
var list = [];
var object = createObjectWithDependencies( 1234 );
object.addDependency( createObject( 2142 ) );
object.addDependency( createObject( 5313 ) );
list.push( object );
var object = createObjectWithDependencies( 4312 );
object.addDependency( createObject( 2142 ) );
object.addDependency( createObject( 5313 ) );
list.push( object );
console.log( list );