简体   繁体   English

我如何迭代此数组?

[英]How do I iterate this array?

I have an array in an array which i need the data from. 我有一个数组,需要从中获取数据。

I have to get the events array inside each index to be one array with the events array as index. 我必须让每个索引内的events数组成为一个以events数组为索引的数组。

This is my try: 这是我的尝试:

//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> 

result should be: 结果应该是:

{ 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"
    }],
}

something like this, i want each events array in the events array to be an index 像这样,我希望事件数组中的每个事件数组都是一个索引

How do i get the array events out of each index and push to an array. 我如何从每个索引中获取数组事件并推送到数组。

Assuming you want a single array of all of the events, there's no reason to use jQuery for this, just the JavaScript standard library. 假设您需要所有事件的单个数组,则没有理由为此使用jQuery,而仅是JavaScript标准库。

In ES5: 在ES5中:

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

Your events object has an events property which is an array of objects that have an events property, so the above loops through those objects and pushes their events into eventArray . 您的events对象有一个events属性,该属性是具有对象的数组events属性,所以通过这些对象的上述环和推它们的事件到eventArray This line: 这行:

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

effectively called eventArray.push(event, event, event, event) for as many events as there are in item.events . 有效地调用eventArray.push(event, event, event, event)来获取和item.events一样多的事件。 See apply on MDN for details. apply于MDN了解详情。

Live Example: 现场示例:

 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)); 

It's clearer in ES2015+: 在ES2015 +中更清晰:

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

That uses for-of to loop through events.events and spread notation to push all of the entries in item.events into eventArray . 它使用for-of循环遍历events.events并扩展表示法,将item.events所有条目item.eventseventArray

Live Example: 现场示例:

 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)); 

simple solution : i hope this will be helpful 简单的解决方案:我希望这会有所帮助

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

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

return (eventArray);
}

  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)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM