javascript - 我想返回在 Javascript 中包含对象数组的对象的一部分
问题描述
我有一个包含对象数组作为子属性的数组。但是,我只想返回部分对象。例如,
我原来的对象是:
var deptObj=
{
"requestId": 0,
"requestId_string": "0",
"departmentRequests": [
{
"persistenceVersion": 3,
"department": [
{
"persistenceId": 111,
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"userId": 26,
"userId_string": "26",
"requestId": 0,
"requestId_string": "0",
"deptStatus": "PENDING",
"groupName": "Group 1 ",
"groupID": "15",
"userName": "user",
"userFirstname": "user1",
"userLastname": "User",
"requestDate": "2020-03-26",
"activityName": "Decision",
"countPending": 0
}
],
"decision": [],
"comment": "start",
"approved": [],
"docIndex": 0
}
]
}
然后,我想得到对象的一部分。例如,
{
"requestId": 0,
"departmentRequests": [
{
"department": [
{
"requestId": 0,
"groupID": "15",
"requestDate": "2020-03-26",
"deptStatus": "PENDING",
"userId": "26",
"countPending": 0
}
],
"comment": "start",
"docIndex": 0
}
]
}
我尝试按如下方式创建 JavaScript:
obj = [];
for(var i in deptObj) {
for(var j in deptObj[i].department) {
var thisObj = {};
thisObj.requestDate = deptObj[i].department[j].requestDate;
thisObj.userId = deptObj[i].department[j].userId;
thisObj.deptStatus = deptObj[i].department[j].deptStatus ;
thisObj.activityName = deptObj[i].department[j].activityName;
thisObj.countPending = deptObj[i].department[j].countPending; //
obj.push(thisObj);
}
}
//return obj;
return {
"requestId": deptObj.requestId,
"departmentRequests": obj
};
我不知道如何在对象中获取子数组。任何帮助将不胜感激..提前致谢。
解决方案
您可以使用它Array.map
来遍历对象中的每个数组并提取所需的数据:
var deptObj = {
"requestId": 0,
"requestId_string": "0",
"departmentRequests": [{
"persistenceVersion": 3,
"department": [{
"persistenceId": 111,
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"userId": 26,
"userId_string": "26",
"requestId": 0,
"requestId_string": "0",
"deptStatus": "PENDING",
"groupName": "Group 1 ",
"groupID": "15",
"userName": "user",
"userFirstname": "user1",
"userLastname": "User",
"requestDate": "2020-03-26",
"activityName": "Decision",
"countPending": 0
}],
"decision": [],
"comment": "start",
"approved": [],
"docIndex": 0
}]
}
// get department requests
const reqs = deptObj.departmentRequests.map(function(dr) {
return {
"comment": dr.comment,
"docIndex": dr.docIndex,
"department": dr.department.map(function(d) {
return {
"requestId": d.requestId,
"groupID": d.groupID,
"requestDate": d.requestDate,
"deptStatus": d.deptStatus,
"userId": d.userId,
"countPending": d.countPending
};
})
};
});
const res = {
"requestId": deptObj.requestId,
"departmentRequests": reqs
};
console.log(res);
推荐阅读
- c# - 如何通过 Avalonia 0.8.3 在 Visual Studio 2019 中成功使用 DataGrid 控件
- python - 在 pyttsx3 中使用 32 位语音
- swift - 如何从 Healthkit 中查询每日总步数并显示到 SwiftUI 文本视图中?
- node.js - NerManager(来自 nlp.js)错误地提取了系统(“预训练”)实体等实体
- java - 是否可以使用 Camel 的“计时器”组件中的属性来修改用于定期轮询的 sql 选择(按时间戳)?
- java - 我的应用程序显示“应用程序可能在其主线程上做了太多工作。”,我不知道代码的哪一部分导致了这种情况
- r - 使用 YahooQF 下载股票目标价格
- swift - 你如何让一个枚举可以通过它的案例名称而不是它的原始值来解码?
- javascript - TypeError:this.props.history 不是 Navigation 共享组件中的函数
- ruby-on-rails - 作为可投票的宝石,我将如何显示喜欢/赞成的帖子