angular - 如何将对象的子元素推送到数组中?
问题描述
我有一个来自 Google People API 的承诺,我想从部分数据中创建一个数组。我无法弄清楚如何在数组中创建子元素。
let arr = new Array();
for (var a = 0; a < obj.length; a++) {
arr.push(obj[a].requestedResourceName);
for (var b = 0; b < obj[a].person.names.length; b++) {
if (obj[a].person.names[b].metadata.source.type === 'CONTACT') {
arr[a].push(obj[a].person.names[b]);
}
}
}
错误是:错误:未捕获(在承诺中):TypeError:arr [a] .push不是函数
解决方案
当你添加一些不是数组的东西arr[a]
时 arr.push(this.k4kItems[a].requestedResourceName)
。
一个建议是添加一个包含 children 属性的对象
let arr = new Array();
for (var a = 0; a < this.k4kItems.length; a++) {
// Adding object with children array
arr.push({item: this.k4kItems[a].requestedResourceName, children: []});
for (var b = 0; b < this.k4kItems[a].person.names.length; b++) {
if (this.k4kItems[a].person.names[b].metadata.source.type === "CONTACT") {
// Pushing to that array, notice we use .children to push child items
arr[a].children.push(this.k4kItems[a].person.names[b]);
}
}
}
const arr = this.k4kItems.map(item => ({
item,
children: item.person.names.filter(
name => name.metadata.source.type === "CONTACT"
)
}))
推荐阅读
- c - 如何将数组值分配给C中的另一个数组?
- android - Android - Back Stack Profiler - 是否有工具或可打印属性?
- python - 转换所有日期时间列 ('
我的项目涉及采用大量 SQL 查询,通过 pandas 将它们转换为 python 中的数据帧,按用户名列过滤,然后将过滤后的数据帧输出到单独的 HTML 文件,这些文件被转换为 PDF 并发布。
我遇到了一个问题,即当日期列出现在 HTML 中时,它们是
- javascript - Html 5 Drop 事件有时不会触发(例如 10/15 次)
- php - 在内容上显示自定义帖子类型及其自定义类别
- javascript - Chrome 扩展 - 如何捕获文档 vanillaJS 上的点击事件
- python - Django对分页结果进行排序
- css - 修复了搜索框和表格标题、滚动正文
- docker - dockerfile暴露端口不能telnet
- listview - ListView 没有正确更新