javascript - 如何遍历 JSON 并向对象添加值
问题描述
所以我很难弄清楚如何创建一个包含两个对象的数组,遍历我的对象并在 Javascript 中向这些对象添加一些值。目前我有以下模拟响应:
const mockResponse =
{
"errors": [
{
"errorKey": "ERROR_NO_DELIVERY_OPTIONS",
"errorParameters": [
{
"errorMessage": "ERROR_DELIVERY_OPTIONS_YOU_SELECTED_NOT_AVAILABLE_NOW",
"partNumbers": [
19308033,
19114798
]
},
{
"errorMessage": "Ship to Home not available for these orderItemId",
"orderItemIds": [
10315031,
10315032
],
"availableShipModeId": 13203
},
{
"errorMessage": "Pickup At Seller not available for these orderItemIds",
"orderItemIds": [
10222222,
10333333
],
"availableShipModeId": 13203
}
],
"errorMessage": "ERROR_NO_DELIVERY_OPTIONS",
"errorCode": "ERROR_NO_DELIVERY_OPTIONS"
}
]
}
我想要一个包含两个对象的数组。一个用于第一条错误消息(“Ship to home...”),另一个用于第二条错误消息(“Pickup at Seller...”)。然后我想遍历 JSON 并将每个“orderItemIds”添加到相应的对象中。例如,10315031,10315032 将转到第一个对象,而 10222222, 10333333 将转到第二个对象。
解决方案
您可以使用 reduce 来遍历您的错误并将 errorMessage 属性用作键
const result = mockResponse.errors[0].errorParameters.reduce((prev, item) => {
const { errorMessage, orderItemIds } = item;
if (prev[errorMessage]) {
prev[errorMessage] = [...prev[errorMessage], ...orderItemsIds];
} else {
prev[errorMessage] = orderItemIds
}
return prev
}, {})
如果这确实回答了您的问题,请告诉我
推荐阅读
- ios - Swift 通用表视图数据源和委托,协议支持 NSManagedObjects,无法获取实体属性,运行时错误
- php - php 验证。无法完全理解我需要发生的逻辑
- crystal-lang - 在编译阶段传递环境变量
- azure - 如何使用 REST API 登录 Azure 门户
- android - Gradle 同步失败:无法启动未定义特定主类的守护进程
- clio-api - 关于“related_contacts”的联系人端点问题
- java - Gradle - Launch4j - 当前工作目录
- excel - 函数if并在excel上取整
- hive - Sqoop 增量导入后 Hive 表过期
- javascript - 如何在不更改文件名的情况下遍历 JS 中的文件夹