我如何迭代这个数组?
How do I iterate this array?
我有一个数组中的数组,我需要从中获取数据。
我必须让每个索引中的事件数组成为一个以事件数组为索引的数组。
这是我的尝试:
//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"
}],
}
像这样,我希望事件数组中的每个事件数组都是一个索引
如何从每个索引中获取数组事件并将其推送到数组。
假设您需要所有事件的单个数组,没有理由为此使用 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
on MDN。
实例:
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
。
实例:
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));
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));
简单的解决方案:我希望这会有所帮助
var parseEvents = function(events) {
var eventArray = [];
jQuery.each(events.events, function(index, item) {
eventArray.push(item['events']);
});
return (eventArray);
}
我有一个数组中的数组,我需要从中获取数据。
我必须让每个索引中的事件数组成为一个以事件数组为索引的数组。
这是我的尝试:
//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"
}],
}
像这样,我希望事件数组中的每个事件数组都是一个索引
如何从每个索引中获取数组事件并将其推送到数组。
假设您需要所有事件的单个数组,没有理由为此使用 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
on MDN。
实例:
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
。
实例:
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));
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));
简单的解决方案:我希望这会有所帮助
var parseEvents = function(events) {
var eventArray = [];
jQuery.each(events.events, function(index, item) {
eventArray.push(item['events']);
});
return (eventArray);
}