Javascript 如何使用typescript从对象数组中获取部分对象

Javascript 如何使用typescript从对象数组中获取部分对象,javascript,arrays,json,angular,typescript,Javascript,Arrays,Json,Angular,Typescript,我有一个对象数组,我只想过滤和ftech对象的一部分,我将把它作为主体参数发送给API。 下面是我的代码,但是它返回了一个数组,里面有我的对象。我不希望它是数组,而只是一个对象。 我怎样才能做到这一点 原始对象数组: [ { "flowId" : 11, "flowName" : "jobtest003", "version" : 1, "ingestionFlowId" : "", "jobCreatedDate" : "25-05-2020", "jobUpdateDate" : "28-0

我有一个对象数组,我只想过滤和ftech对象的一部分,我将把它作为主体参数发送给API。 下面是我的代码,但是它返回了一个数组,里面有我的对象。我不希望它是数组,而只是一个对象。 我怎样才能做到这一点

原始对象数组:

[ {
"flowId" : 11,
"flowName" : "jobtest003",
"version" : 1,
"ingestionFlowId" : "",
"jobCreatedDate" : "25-05-2020",
"jobUpdateDate" : "28-06-2020",
"jobLastRunDate" : "29-06-2020",
"active" : false,
"properties" : [ {
"id" : 12,
"key" : "sourceTable",
"value" : "job002",
"category" : "General Settings"
}, {
"id" : 13,
"key" : "Source",
"value" : "api",
"category" : "Source Properties"
},  {
"id" : 147,
"key" : "Target Path",
"value" : "/raw/au/jackson",
"category" : "Destination Properties"
} ]
}, {
"flowId" : 21,
"flowName" : "jobtest004",
"version" : 1,
"ingestionFlowId" : null,
"jobCreatedDate" : "25-05-2020",
"jobUpdateDate" : "28-06-2020",
"jobLastRunDate" : "29-06-2020",
"active" : false,
"properties" : [ {
"id" : 21,
"key" : "sourceTable",
"value" : "job003",
"category" : "General Settings"
}, {
"id" : 22,
"key" : "Source",
"value" : "api",
"category" : "Source Properties"
}, {
"id" : 23,
"key" : "Client ID",
"value" : "ebf73456-443e-4986-941b-057906d25e2f",
"category" : "Destination Properties"
},  {
"id" : 147,
"key" : "Target Path",
"value" : "/raw/au/jackson",
"category" : "Destination Properties"
} ]
}, {
"flowId" : 22,
"flowName" : "jobtest004",
"version" : 1,
"ingestionFlowId" : null,
"jobCreatedDate" : "25-05-2020",
"jobUpdateDate" : "28-06-2020",
"jobLastRunDate" : "29-06-2020",
"active" : false,
"properties" : [ {
"id" : 21,
"key" : "sourceTable",
"value" : "job003",
"category" : "General Settings"
}, {
"id" : 22,
"key" : "Source",
"value" : "api",
"category" : "Source Properties"
}, {
"id" : 23,
"key" : "Client ID",
"value" : "ebf73456-443e-4986-941b-057906d25e2f",
"category" : "Destination Properties"
},  {
"id" : 147,
"key" : "Target Path",
"value" : "/raw/au/jackson",
"category" : "Destination Properties"
} ]
} ]
我想要的结果是:

{
  "flowId" : 20,
  "flowName" : "jobtest004",
  "version" : 1,
  "ingestionFlowId" : null,
  "jobCreatedDate" : "25-05-2020",
  "jobUpdateDate" : "28-06-2020",
  "jobLastRunDate" : "29-06-2020",
  "active" : false,
  "properties" : [ {
    "id" : 21,
    "key" : "sourceTable",
    "value" : "job003",
    "category" : "General Settings"
  }, {
    "id" : 22,
    "key" : "Source",
    "value" : "api",
    "category" : "Source Properties"
  }, {
    "id" : 23,
    "key" : "Client ID",
    "value" : "ebf73456-443e-4986-941b-057906d25e2f",
    "category" : "Destination Properties"
  },  {
    "id" : 147,
    "key" : "Target Path",
    "value" : "/raw/au/jackson",
    "category" : "Destination Properties"
  } ]
}
我得到的结果是:

[{
  "flowId" : 20,
  "flowName" : "jobtest004",
  "version" : 1,
  "ingestionFlowId" : null,
  "jobCreatedDate" : "25-05-2020",
  "jobUpdateDate" : "28-06-2020",
  "jobLastRunDate" : "29-06-2020",
  "active" : false,
  "properties" : [ {
    "id" : 21,
    "key" : "sourceTable",
    "value" : "job003",
    "category" : "General Settings"
  }, {
    "id" : 22,
    "key" : "Source",
    "value" : "api",
    "category" : "Source Properties"
  }, {
    "id" : 23,
    "key" : "Client ID",
    "value" : "ebf73456-443e-4986-941b-057906d25e2f",
    "category" : "Destination Properties"
  },  {
    "id" : 147,
    "key" : "Target Path",
    "value" : "/raw/au/jackson",
    "category" : "Destination Properties"
  } ]
}]
我不希望我的结果是一个数组,我只希望它是一个对象。

为此,您可以在数组上使用find方法


使用数组的find方法,如下所示

var array = your data;

var object_needed = array.find(d=>d.flowId == 21)//use required id in place of 21 or use required property in place of .flowIf
//console.log(object_needed)

希望这有帮助

如果我没听错的话,请解释一下 Array.prototype.filter将始终仅返回数组,您必须使用数组索引从数组中获取对象

使用reduce方法将数组转换为对象

const convertArrayToObject=数组,键=>{ 常量initialValue={}; return array.reduceobj,item=>{ 返回{ …obj, [项目[关键]]:项目, }; },初始值; }; 让testData=[{flowId:11,flowName:jobtest003,版本:1,ingestionFlowId:,jobCreatedDate:25-05-2020,jobUpdateDate:28-06-2020,jobLastRunDate:29-06-2020,active:false,属性:[{id:12,键:sourceTable,值:job002,类别:常规设置},{id:13,键:源,值:api,类别:源属性},{id:147,key:Target Path,value:/raw/au/jackson,category:Destination Properties}]},{flowId:21,flowName:jobtest004,版本:1,ingestionFlowId:null,JobCreateDate:25-05-2020,jobUpdateDate:28-06-2020,jobLastRunDate:29-06-2020,活动:false,属性:[{id:21,key:sourceTable,value:job003,category:General Settings},{id:22,key:Source,value:api,category:sourceproperties},{id:23,key:Client-id,value:ebf73456-443e-4986-941b-057906d25e2f,category:Destination-Properties},{id:147,key:Target Path,value:/raw/au/jackson,category:Destination-Properties}]},{flowId:22,flowName:jobtest004,版本:1,ingestionFlowId:null,jobCreatedDate:25-05-2020,jobUpdateDate:28-06-2020,jobLastRunDate:29-06-2020,active:false,属性:[{id:21,键:sourceTable,值:job003,类别:常规设置},{id:22,键:源,值:api,类别:源属性},{id:23,key:Client-id,value:ebf73456-443e-4986-941b-057906d25e2f,category:Destination-Properties},{id:147,key:Target-Path,value:/raw/au/jackson,category:Destination-Properties}]; console.log ConvertArrayTobjectTestData,“flowId”
;您可以使用下面的find方法,该方法将只返回object

arrayOfData.find(function(obj){
return obj.Id == 11
})


谢谢。我通过循环和过滤数组使我的任务复杂化了。Find很简单,工作也很完美。
arrayOfData.find(obj => obj.Id == 11)