Как создать массив из свойств объекта в файле JSON?

#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 это свойство, которое вы хотите извлечь в массив из массива объектов.