JavaScript 动态数组与对象和数组

JavaScript dynamic array with object and array

本文关键字:数组 对象 JavaScript 动态      更新时间:2023-09-26

我在JavaScript中创建带有对象的列表时遇到问题:对象将包含一个整数值和一个数组。

结构将如下所示(此代码有效):

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) 后它只返回 [[]] .

有人知道解决方案吗?

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});
对象未

定义。做:

var object = {};

你应该做list[0].dependencyList.length)你也应该改变: object.dependencyList.push(2222);object.dependencyList.push({id: 2222});

对象是你的朋友。

如果你需要创建很多这样的东西,你可能应该定义它们在函数中的形状。 这样做的一个优点是,您可以创建一个资源库来添加依赖项,该依赖项将实现隐藏为对特定成员变量的推送。

像这样:

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 );