underscore.js-从嵌入对象列表中的对象创建唯一项数组

加密卡尔39

我一直在尝试我正在处理Meteor项目中使用underscore.js,但似乎无法弄清楚如何转换一组对象。

这些对象看起来像这样(大约15k,但它们都看起来像这两个):

 [{
   "_id": "a_0011223344",
   "taggedUsers": [{
     "id": 1122244453,
     "username": "john123"
   }],
   "field": "ABC"
 }, {
   "_id": "a_0011223345",
   "taggedUsers": [{
     "id": 1122244454,
     "username": "bill123"
   }, {
     "id": 1122244455,
     "username": "jim123"
   }],
   "field": "ABC"
 }]

每个对象可以有一个或多个"taggedUsers"对象,并且我需要唯一"taggedUsers.username"字段的列表流星不支持MongoDB的不同的功能,所以我试图用underscore.js代替(每次我读过,并在reccomendation这个职位)。

在我的服务器端控制台中,db.myCollection.distinct("taggedUsers.username")返回期望的结果["john123", "bill123", "jim123"],但是我无法在underscore.js中复制它。

我一直在尝试的组合_.each_.map_.pluck,和_.uniq,但一直未果。我认为字段包含在嵌入式对象中可能有所帮助,但不确定。

理想情况下,我想返回如下所示的对象数组:

[{
  "id": 1122244453,
  "username": "john123",
  "field": "ABC"
}, {
  "id": 1122244454,
  "username": "bill123",
  "field": "ABC"
}, {
  "id": 1122244455,
  "username": "jim123",
  "field": "DEF"
}]
删除 taggedUsers.username taggedUsers.id field ,并删除了所有重复项,但是如果我也能得到函数中的 taggedUsers.usernames 类似数组,那将是很高兴 db.colleciton.distinct()

最终,很高兴知道如何获取基本数组,唯一对象的数组(甚至可能如何获取db.collection.distinct()模板帮助程序的结果),但是对正确方向的任何帮助或指导将不胜感激!

戴维·韦尔顿

根据我们的对话,听起来最好通过方法调用在服务器上进行计算。出于教育目的,这是使用下划线的方法:

// Get an array of docs somehow
var docs = Collection.find().fetch();

var taggedUsers = _.chain(docs)
  .map(function(d) {
    // Copy the 'field' to each of the tagged users within a doc
    _.each(d.taggedUsers, function(user) {
      user.field = d.field;
    });
    return d;
  })
  .pluck('taggedUsers') // Extract only the tagged users arrays
  .flatten() // Flatten them into a single array
  .value();

// taggedUsers could look something like:
// [ { id: 1122244453, username: 'john123', field: 'ABC' },
//   { id: 1122244454, username: 'bill123', field: 'ABC' },
//   { id: 1122244455, username: 'jim123', field: 'ABC' },
//   { id: 1122244453, username: 'john123', field: 'ABC' } ]

// Compute a unique lists of tagged users, where the docs are unique by id
var utu = _.uniq(taggedUsers, false, function(user) {return user.id;});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Underscore.js在对象数组中查找唯一值;返回唯一项及其数量

来自分类Dev

使用Underscore.js数组对象

来自分类Dev

展平underscore.js中的嵌套数组/对象

来自分类Dev

使用Underscore.js根据属性从数组中删除对象

来自分类Dev

使用underscore.js获取数组中的对象

来自分类Dev

使用Underscore.js根据属性从数组中删除对象

来自分类Dev

Underscore.js,根据键值删除对象数组中的重复项

来自分类Dev

Underscore.js findWhere嵌套对象

来自分类Dev

在underScore.js中创建多个_.templateSettings

来自分类Dev

使用underscore.js从对象/数组中仅检索一个字段

来自分类Dev

Underscore.js将对象键展平到数组

来自分类Dev

如何使用underscore.js获取嵌套对象的内部数组?

来自分类Dev

Underscore.js将对象转换为数组

来自分类Dev

Underscore.js-具有相同键的对象数组

来自分类Dev

Underscore.js将对象键展平到数组

来自分类Dev

如何使用underscore.js获取嵌套对象的内部数组?

来自分类Dev

Underscore.js数组过滤

来自分类Dev

与underscore.js中的位置相反

来自分类Dev

underscore.js模板中的条件

来自分类Dev

对于Underscore.JS中的每个

来自分类Dev

Underscore.js模板中的jQuery插件

来自分类Dev

与underscore.js中的位置相反

来自分类Dev

更改underscore.js中地图的结果

来自分类Dev

在underscore.js中扩展对象的最佳实践

来自分类Dev

Underscore.js中的_()函数(对象包装器)如何工作?

来自分类Dev

JavaScript / Underscore.js-从嵌套对象中动态减去值

来自分类Dev

使用underscore.js在另一个对象中查找一个对象

来自分类Dev

Underscore.js筛选器操作可动态创建对象列表

来自分类Dev

使用Underscore.js从不同对象的值创建数组

Related 相关文章

热门标签

归档