javascript - 如何将空数组添加到对象数组?

标签 javascript arrays angularjs

基本上我有一个从中提取数据的数组。我想向其中添加一个新数组,以便提取更多数据。

var myArray.libraries = []

像这样通过 for 循环获取添加的项目:

for(var x=0; x < items.length; x++){
    myArray.libraries ({ name: items(x).name, state: items(x).state});
}

效果很好,我可以从 myArray.libraries .name 获得我需要的东西。我需要添加类似“书籍”的内容,以便每个条目都可以有它的书籍列表。可能有 1 本书或多本书。

需要说明的是,我使用的是 angular,所以我使用类似这样的东西为每个库输出:

<div ng-repeat="library in libraries">
    <p>{{library.name}}</p>
</div>

我只需要添加 books 这样我就可以遍历该图书馆中的每本书:

<div ng-repeat="book in libraries.books">
    <p>{{book.name}}</p>
</div>

我尝试使用 myArray.libraries.books = [] 但这并没有将收集添加到每个图书馆。我还尝试了 myArray.libraries.push({ books: { } }) 但这没有任何影响,并给了我一个错误,我无法推送到 myArray.libraries。书籍,因为书籍不存在。

编辑

这是一些示例代码。我用的是 angular 但原理应该是一样的:

$scope.libraries= [];

//start loop to get the installations
for (var x = 0; x < res.rows.length; x++) {
    $scope.libraries.push({ ... , books: []});

    //run a new query to get the additional libraries info
    var booksQuery = query to get books;
    //run query to get results and loop through them
        for (var i = 0;i < res2.rows.length; i++) {
            $scope.libraries[x].books.push({ name: res2.rows.item(i).prodName });
        }
    });
}

编辑

我运行了一些测试,结果发现当我进行第二次数据库调用时它不知道原始 $scope 存在。

最佳答案

尝试如下:

for(var x=0; x < items.length; x++){
    myArray.libraries ({ name: items(x).name, state: items(x).state, books: []});
}

这应该可以解决问题。

关于javascript - 如何将空数组添加到对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30673117/

相关文章:

javascript - 如何在鼠标悬停时获取 highcharts 图形点的值?

javascript - 为什么这个 javascript 函数创建的是深拷贝而不是浅拷贝?

php - 学说 : How to store dynamic attributes

PHP将字符串转换为数组

javascript - 图像在过滤列表中自行卸载

javascript - 如何确定 javascript 迭代器是否提前终止?

javascript - 在页面上查看 Angular 模板的内容

javascript - Angular 单元测试,模拟使用 $injector 注入(inject)的服务

angularjs - 通过查询字符串传递 "Bearer"时 SignalR 身份验证失败

javascript - 使用 jQuery 获取每个图像的自然高度