首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs中读取数组中的对象

在nodejs中读取数组中的对象
EN

Stack Overflow用户
提问于 2018-09-21 15:48:37
回答 3查看 59关注 0票数 1

我正在尝试从数组中的对象中获取_id

代码语言:javascript
复制
[ { _id: 5ba49c6304daff5034e6fa6a,
    email: 'editor@gmail.com',
    active: true,
    events: [ [Object], [Object], [Object] ],
    name: { first: 'editor', last: 'editor' } } ]

事件数组中的每个对象都包含一个_id。我需要在另一个数组中获取这些in。

代码语言:javascript
复制
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。

任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-21 16:00:18

代码语言:javascript
复制
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);

票数 2
EN

Stack Overflow用户

发布于 2018-09-21 15:55:12

在for循环中,您缺少了在events._id之前的i。

代码语言:javascript
复制
userobj.events[i]._id

这是在一行中完整的代码:

代码语言:javascript
复制
let eIds = userobj.events.map(ele=>ele._id)
票数 2
EN

Stack Overflow用户

发布于 2018-09-21 16:01:03

我想改进你的解决方案。首先,您正在检查null。然后将ids推送到数组中。在这里,您可以使用一些JS技巧和箭头功能,像这样;

代码语言:javascript
复制
let obj = { events: [ {_id: 1}, {_id: 2}, {_id: 3}] };

let eventIds = (obj.events || []).map(event => event._id);

console.log(eventIds);

此外,你也可以使用ES6破坏穆罕默德显示;

代码语言:javascript
复制
let eventIds = (obj.events || []).map(({_id}) => _id);

顺便说一句,你可以像这样使用减缩。

代码语言:javascript
复制
let eventIds = (obj.events || []).reduce((acc, elem) => {
    if(elem._id) {
       acc.push(elem._id);
    }
    return acc;
}, []);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52447215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档