我正在尝试从数组中的对象中获取_id。
[ { _id: 5ba49c6304daff5034e6fa6a,
email: 'editor@gmail.com',
active: true,
events: [ [Object], [Object], [Object] ],
name: { first: 'editor', last: 'editor' } } ]事件数组中的每个对象都包含一个_id。我需要在另一个数组中获取这些in。
if (userobj.events) {
if (userobj.events[0]) {
var eIds = [];
for (var i = 0; i<userobj.events.length; i++) {
console.log(userobj.events._id);
eIds.push(userobj.events._id);
}
andArr.push({"_id":{"$in":eIds}});
}
}我正在为每一个undefined得到_id。
任何帮助都是非常感谢的。
发布于 2018-09-21 16:00:18
userobj ={
_id: '5ba',
email: 'editor@gmail.com',
active: true,
events: [ {_id:23},{_id:34},{_id:56},{}],
}
let listOfId = [];
userobj.events.map(({_id})=> { if(_id) listOfId.push(_id) });
console.log("listOfId",listOfId);
发布于 2018-09-21 15:55:12
在for循环中,您缺少了在events和._id之前的i。
userobj.events[i]._id这是在一行中完整的代码:
let eIds = userobj.events.map(ele=>ele._id)发布于 2018-09-21 16:01:03
我想改进你的解决方案。首先,您正在检查null。然后将ids推送到数组中。在这里,您可以使用一些JS技巧和箭头功能,像这样;
let obj = { events: [ {_id: 1}, {_id: 2}, {_id: 3}] };
let eventIds = (obj.events || []).map(event => event._id);
console.log(eventIds);此外,你也可以使用ES6破坏穆罕默德显示;
let eventIds = (obj.events || []).map(({_id}) => _id);顺便说一句,你可以像这样使用减缩。
let eventIds = (obj.events || []).reduce((acc, elem) => {
if(elem._id) {
acc.push(elem._id);
}
return acc;
}, []);https://stackoverflow.com/questions/52447215
复制相似问题