如何从一个JSON对象创建两个具有不同值的数组

How to create two arrays with different values in them from a JSON object?

本文关键字:数组 两个 对象 一个 JSON 创建      更新时间:2023-09-26

我有以下JSON数据:

jobHistoryJsonLst = [{
  "uuid" : "bGd_AAABNaMAAAFQHvY0UyTa",
  "startDate" : "2015-10-01 15:22:21",
  "endDate" : "2015-10-01 15:22:24",
  "executionTime" : "0:0:2.951"
}, {
  "uuid" : "lat_AAABqh4AAAFPQ8k0U_qu",
  "startDate" : "2015-09-23 10:50:02",
  "endDate" : "2015-09-23 10:50:06",
  "executionTime" : "0:0:3.284"
}]

我想从上面的JSON对象创建两个不同的数组。一个应该包含所有startDate数据,另一个应该包含所有executionTime数据。

期望输出:

startDateArr = ['2015-10-01 15:22:21', '2015-09-23 10:50:02']
execTimeArr = ['0:0:2.951', '0:0:3.284']

您可以使用map(),这意味着处理两次或使用forEach循环一次并将其压入数组。

jobHistoryJsonLst = [{
  "uuid" : "bGd_AAABNaMAAAFQHvY0UyTa",
  "startDate" : "2015-10-01 15:22:21",
  "endDate" : "2015-10-01 15:22:24",
  "executionTime" : "0:0:2.951"
}, {
  "uuid" : "lat_AAABqh4AAAFPQ8k0U_qu",
  "startDate" : "2015-09-23 10:50:02",
  "endDate" : "2015-09-23 10:50:06",
  "executionTime" : "0:0:3.284"
}];
var start = jobHistoryJsonLst.map( function (obj) { return obj.startDate; } );
var end = jobHistoryJsonLst.map( function (obj) { return obj.endDate; } );
//or
var start = [], 
end = [];
jobHistoryJsonLst.forEach( function(obj) { 
    start.push(obj.startDate); 
    end.push(obj.endDate); 
});

您可以使用.map或简单的循环,像这样

var jobHistoryJsonLst = [{
  "uuid" : "bGd_AAABNaMAAAFQHvY0UyTa",
  "startDate" : "2015-10-01 15:22:21",
  "endDate" : "2015-10-01 15:22:24",
  "executionTime" : "0:0:2.951"
}, {
  "uuid" : "lat_AAABqh4AAAFPQ8k0U_qu",
  "startDate" : "2015-09-23 10:50:02",
  "endDate" : "2015-09-23 10:50:06",
  "executionTime" : "0:0:3.284"
}];
var dates = [], 
    times = [], 
    len = jobHistoryJsonLst.length, i;
for (i = 0; i < len; i++) {
  dates.push(jobHistoryJsonLst[i].endDate);
  times.push(jobHistoryJsonLst[i].executionTime);
}
console.log(dates, times);
// or with .map 
var dates = jobHistoryJsonLst.map(function (el) {
  return el.endDate;
});
var times = jobHistoryJsonLst.map(function (el) {
  return el.executionTime;
})
console.log(dates, times);