#arrays #json
#массивы #json
Вопрос:
У меня есть файл JSON, состоящий из вложенных объектов. Мне нужно создать массив из определенных значений общего свойства объектов.
{
"events": {
"ALi5xqnv": {
"alliance": "XXXX",
"reason": "test 1",
"status": "<:hostile:695922420196048916> Enemy",
"officer": "575143567081734144",
"time": "2020-11-08T00:40:13.811Z"
},
"ALhnwb06": {
"alliance": "XXXX",
"reason": "test 2",
"status": "<:neutral:695923140722950224> Neutral",
"officer": "575143567081734144",
"time": "2020-11-08T00:40:19.445Z"
},
"AL6pok1m": {
"alliance": "XXXX",
"reason": "test 6",
"status": "<:hostile:695922420196048916> Enemy",
"officer": "575143567081734144",
"time": "2020-11-08T02:12:15.892Z"
},
"AL0u0n55": {
"alliance": "XXXX",
"reason": "test 7",
"status": "<:neutral:695923140722950224> Neutral",
"officer": "575143567081734144",
"time": "2020-11-08T02:12:22.799Z"
},
"AL1hyn94": {
"alliance": "XXXX",
"reason": "test 8",
"status": "<:friendly:695923106342240267> Friendly",
"officer": "575143567081734144",
"time": "2020-11-08T02:12:30.239Z"
},
"ALgd9pgx": {
"alliance": "XXXX",
"reason": "test 9",
"status": "<:ally:695922446922154026> Allied",
"officer": "575143567081734144",
"time": "2020-11-08T02:12:35.083Z"
}
},
"XXXX": {
"status": "<:ally:695922446922154026> Allied",
"eventIndex": [
"ALi5xqnv",
"ALhnwb06",
"AL6pok1m",
"AL0u0n55",
"AL1hyn94",
"ALgd9pgx"
]
}
}
Мне нужен массив поля «время», например
var timeArray = ['2020-11-08T00:40:13.811Z', '2020-11-08T00:40:19.445Z', '2020-11-08T02:12:15.892Z', '2020-11-08T02:12:22.799Z', '2020-11-08T02:12:30.239Z', '2020-11-08T02:12:35.083Z']
Я пытался:
var eventList = <filename>.getData(/XXXX/eventIndex);
var list = <filename>.getData(/events/eventList[i]);
let timeArray = list.map(a => a.time);
и еще несколько вещей, но я не смог заставить это работать. Я был бы признателен за любую помощь!
Комментарии:
1. Какой язык вы используете?
Ответ №1:
Извините, я не совсем понял ваше намерение, так что это мой новый ответ: (Я предполагаю, что вы задаете вопросы о javascript
?)
const jsonData = {
events: {
ALi5xqnv: {
alliance: 'XXXX',
reason: 'test 1',
status: '<:hostile:695922420196048916> Enemy',
officer: '575143567081734144',
time: '2020-11-08T00:40:13.811Z',
},
ALhnwb06: {
alliance: 'XXXX',
reason: 'test 2',
status: '<:neutral:695923140722950224> Neutral',
officer: '575143567081734144',
time: '2020-11-08T00:40:19.445Z',
},
AL6pok1m: {
alliance: 'XXXX',
reason: 'test 6',
status: '<:hostile:695922420196048916> Enemy',
officer: '575143567081734144',
time: '2020-11-08T02:12:15.892Z',
},
AL0u0n55: {
alliance: 'XXXX',
reason: 'test 7',
status: '<:neutral:695923140722950224> Neutral',
officer: '575143567081734144',
time: '2020-11-08T02:12:22.799Z',
},
AL1hyn94: {
alliance: 'XXXX',
reason: 'test 8',
status: '<:friendly:695923106342240267> Friendly',
officer: '575143567081734144',
time: '2020-11-08T02:12:30.239Z',
},
ALgd9pgx: {
alliance: 'XXXX',
reason: 'test 9',
status: '<:ally:695922446922154026> Allied',
officer: '575143567081734144',
time: '2020-11-08T02:12:35.083Z',
},
},
XXXX: {
status: '<:ally:695922446922154026> Allied',
eventIndex: [
'ALi5xqnv',
'ALhnwb06',
'AL6pok1m',
'AL0u0n55',
'AL1hyn94',
'ALgd9pgx',
],
},
};
const timeArray = [];
for (const eI of jsonData.XXXX.eventIndex) {
timeArray.push(jsonData.events[eI].time);
}
console.log(timeArray);
Ответ №2:
Попробуйте ниже:
let arr = arrobj.map( obj => obj.foo );
foo
это свойство, которое вы хотите извлечь в массив из массива объектов.