Как мне перебрать этот массив? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть массив в массиве, из которого мне нужны данные.

Я должен получить массив событий внутри каждого индекса как один массив с массивом событий в качестве индекса.

Это моя попытка:

//array

    var events = {
    "events": [{
        "id": 3,
        "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
        "event_id": 102,
        "created_at": "2019-06-13 20:46:40",
        "updated_at": "2019-06-13 20:46:40",
        "events": [{
            "id": 102,
            "title": "asdsadsa",
            "description": "dsadsadsa",
            "url": "asdsad",
            "color": "#000000",
            "start": "2019-06-04 08:30:00",
            "end": "2019-06-04 13:00:00"
        }]
    }, {
        "id": 9,
        "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
        "event_id": 108,
        "created_at": "2019-06-14 10:41:13",
        "updated_at": "2019-06-14 10:41:13",
        "events": [{
            "id": 108,
            "title": "GC",
            "description": "FDGDFGDFG",
            "url": "DFGFDG",
            "color": "#000000",
            "start": "2019-06-25 22:00:00",
            "end": "2019-06-29 22:00:00"
        }]
    }]
}

    // events = this array
    var parseEvents = function(events) {
            var eventArray = [];

            jQuery.each(events, function(index, item) {
                eventArray.push(item['events']);
            });

            return (eventArray);
        }

     console.log(parseEvents(events));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

результат должен быть:

{ 1 //index : [{
        "id": 102,
        "title": "asdsadsa",
        "description": "dsadsadsa",
        "url": "asdsad",
        "color": "#000000",
        "start": "2019-06-04 08:30:00",
        "end": "2019-06-04 13:00:00"
    }],
2: [{
        "id": 102,
        "title": "asdsadsa",
        "description": "dsadsadsa",
        "url": "asdsad",
        "color": "#000000",
        "start": "2019-06-04 08:30:00",
        "end": "2019-06-04 13:00:00"
    }],
}

как-то так, я хочу, чтобы каждый массив событий в массиве событий был индексом

Как получить события массива из каждого индекса и отправить их в массив.

Ответы [ 3 ]

3 голосов
/ 14 июня 2019

Предполагая, что вам нужен один массив всех событий, нет никаких причин использовать для этого jQuery, только стандартную библиотеку JavaScript.

В ES5:

var parseEvents = function(events) {
    var eventArray = [];
    events.events.forEach(function(item) {
        eventArray.push.apply(eventArray, item.events);
    });
    return eventArray;
};

Ваш events объект имеет свойство events, которое представляет собой массив объектов, обладающих свойством events, поэтому вышеприведенный цикл проходит через эти объекты и помещает их события в eventArray. Эта строка:

eventArray.push.apply(eventArray, item.events);

фактически называется eventArray.push(event, event, event, event) столько раз, сколько в item.events. Подробнее см. apply в MDN .

Live Пример:

var events = {
  "events": [{
    "id": 3,
    "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
    "event_id": 102,
    "created_at": "2019-06-13 20:46:40",
    "updated_at": "2019-06-13 20:46:40",
    "events": [{
      "id": 102,
      "title": "asdsadsa",
      "description": "dsadsadsa",
      "url": "asdsad",
      "color": "#000000",
      "start": "2019-06-04 08:30:00",
      "end": "2019-06-04 13:00:00"
    }]
  }, {
    "id": 4,
    "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
    "event_id": 103,
    "created_at": "2019-06-13 20:46:45",
    "updated_at": "2019-06-13 20:46:45",
    "events": [{
      "id": 103,
      "title": "asdsad",
      "description": "sadsad",
      "url": "",
      "color": "#000000",
      "start": "2019-06-04 08:30:00",
      "end": "2019-06-04 13:00:00"
    }]
  }]
}

var parseEvents = function(events) {
    var eventArray = [];

    events.events.forEach(function(item) {
        eventArray.push.apply(eventArray, item.events);
    });
    return eventArray;
};

console.log(parseEvents(events));

Это яснее в ES2015 +:

const parseEvents = function(events) {
    const eventArray = [];
    for (const item of events.events) {
        eventArray.push(...item.events);
    }
    return eventArray;
};

Использует for-of для циклического перебора events.events и распространения нотации для вставки всех записей в item.events в eventArray.

Live Пример:

const events = {
  "events": [{
    "id": 3,
    "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
    "event_id": 102,
    "created_at": "2019-06-13 20:46:40",
    "updated_at": "2019-06-13 20:46:40",
    "events": [{
      "id": 102,
      "title": "asdsadsa",
      "description": "dsadsadsa",
      "url": "asdsad",
      "color": "#000000",
      "start": "2019-06-04 08:30:00",
      "end": "2019-06-04 13:00:00"
    }]
  }, {
    "id": 4,
    "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
    "event_id": 103,
    "created_at": "2019-06-13 20:46:45",
    "updated_at": "2019-06-13 20:46:45",
    "events": [{
      "id": 103,
      "title": "asdsad",
      "description": "sadsad",
      "url": "",
      "color": "#000000",
      "start": "2019-06-04 08:30:00",
      "end": "2019-06-04 13:00:00"
    }]
  }]
}

const parseEvents = function(events) {
    const eventArray = [];
    for (const item of events.events) {
        eventArray.push(...item.events);
    }
    return eventArray;
};

console.log(parseEvents(events));
1 голос
/ 14 июня 2019

простое решение: надеюсь, это будет полезно

var parseEvents = function(events) {
 var eventArray = [];

 jQuery.each(events.events, function(index, item) {
    eventArray.push(item['events']);
 });

return (eventArray);
}
0 голосов
/ 14 июня 2019

    let events =   {
        "events": [{
            "id": 3,
            "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
            "event_id": 102,
            "created_at": "2019-06-13 20:46:40",
            "updated_at": "2019-06-13 20:46:40",
            "events": [{
                "id": 102,
                "title": "asdsadsa",
                "description": "dsadsadsa",
                "url": "asdsad",
                "color": "#000000",
                "start": "2019-06-04 08:30:00",
                "end": "2019-06-04 13:00:00"
            }]
        }, {
            "id": 9,
            "user_id": "48f8fd57-5116-419c-b43a-cff90a4ae39b",
            "event_id": 108,
            "created_at": "2019-06-14 10:41:13",
            "updated_at": "2019-06-14 10:41:13",
            "events": [{
                "id": 108,
                "title": "GC",
                "description": "FDGDFGDFG",
                "url": "DFGFDG",
                "color": "#000000",
                "start": "2019-06-25 22:00:00",
                "end": "2019-06-29 22:00:00"
            }]
        }]
    } 

    

// events = this array
    var parseEvents = function(events) {
      var obj = {}
      events.events.forEach(function(item,indx){
          Object.assign(obj, {[indx+1]: item.events})               
      })
        return (obj);
    }

 console.log(parseEvents(events));


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