Как получить часть объекта из массива объектов, используя машинопись - PullRequest
0 голосов
/ 13 марта 2020

У меня есть массив объектов, и я хочу отфильтровать и получить только часть объекта, которую я буду отправлять в качестве параметра тела в 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"
  } ]
}]

Я не хочу, чтобы мой результат был массивом, я просто хочу, чтобы он был объектом.

Ответы [ 5 ]

4 голосов
/ 13 марта 2020

Используйте метод поиска массива следующим образом.

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)

Надеюсь, это поможет !!!

1 голос
/ 13 марта 2020

Для этого вы можете использовать метод find в массиве

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

0 голосов
/ 13 марта 2020

Вы можете использовать метод поиска, как показано ниже, который будет возвращать только объект

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

или

arrayOfData.find(obj => obj.Id == 11)
0 голосов
/ 13 марта 2020

Используйте метод reduce для преобразования массива в объект.

const convertArrayToObject = (array, key) => {
      const initialValue = {};
      return array.reduce((obj, item) => {
        return {
          ...obj,
          [item[key]]: item,
        };
      }, initialValue);
    };

let testData = [ { "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" } ] } ];

    console.log(
      convertArrayToObject(testData,'flowId')
    );

нажмите здесь для подробного объяснения

0 голосов
/ 13 марта 2020

Если вы правильно поняли, Array.prototype.filter всегда будет возвращать только массив, вы должны использовать индекс массива, чтобы вывести объект из массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...