javascript - 如何将对象数组作为键值对推送到数组中
问题描述
假设我从这样的 API 获取 JSON
lineItem = {
"rows": {
"10010": [
{
"id": "[10010,1,1]",
"po_item": 10010,
"schedule_no": 1,
"chainage_no": 1
},
{
"id": "[10010,2,1]",
"po_item": 10010,
"schedule_no": 2,
"chainage_no": 1
}
],
"10020": [
{
"id": "[10020,1,1]",
"po_item": 10020,
"schedule_no": 1,
"chainage_no": 1
},
{
"id": "[10020,2,1]",
"po_item": 10020,
"schedule_no": 2,
"chainage_no": 1
}
]
}
}
我需要填充如下所示的数组,
resultArray = [
"10010": [
{
"id": "[10010,1,1]",
"status": 0
},
{
"id": "[10010,2,1]",
"status": 0
}
],
"10020": [
{
"id": "[10020,1,1]",
"status": 0
},
{
"id": "[10020,2,1]",
"status": 0
}
]
]
我尝试过以下方法
Object.keys(this.lineItem.rows).map(key => {
this.resultArray[key] = [];
this.lineItem.rows[key].map(item => {
this.resultArray[key].push({ id: item.id, status: 0 });
});
});
但我得到的结果如下所示,但元素为空
(10021) [empty × 10010, Array(2), empty × 9, Array(2)]
10010: (2) [{…}, {…}]
10020: (2) [{…}, {…}]
length: 10021
__proto__: Array(0)
在这里您可以看到空 x 10010 和空 x 9。当我尝试将 resultArray 作为有效负载发送到 API 时,它会添加 10019 null,然后添加两个数组。
解决方案
let lineItem = {
"rows": {
"10010": [
{
"id": "[10010,1,1]",
"po_item": 10010,
"schedule_no": 1,
"chainage_no": 1
},
{
"id": "[10010,2,1]",
"po_item": 10010,
"schedule_no": 2,
"chainage_no": 1
}
],
"10020": [
{
"id": "[10020,1,1]",
"po_item": 10020,
"schedule_no": 1,
"chainage_no": 1
},
{
"id": "[10020,2,1]",
"po_item": 10020,
"schedule_no": 2,
"chainage_no": 1
}
]
}
};
let resultArray=Object.entries(lineItem.rows)
.map(([key,value])=>({[key]:value.map(v=>({id:v.id,status:0}))}));
console.log(resultArray);
推荐阅读
- r - r 提取具有字段名称的数据集的子集
- javascript - 使用重置按钮清除单选按钮信息的 Dom 修改
- python - 使用准备好的查询来更改 MySQL 更新命令 Python 3.5 中的列
- php - 过滤数组以使用单词边界保留包含搜索词的值
- ios - 字符串不通过segue?
- javascript - 表格仅按字母顺序排序,而不是按数字排序
- python - 如何正确使用 tf.metrics.recall_at_k?
- python - Python 3 IDLE (Shell) 但树莓派上只安装了 Python 2.7?
- javascript - 将复选框选择合并到 appendChild
- c++ - 使所有派生模板类成为 C++ 中其他类的朋友