javascript - 从数组中获取唯一 ID 的总和

标签 javascript arrays set

<分区>

我需要遍历对象数组并对唯一 _id(s) 的总数求和。想象一个看起来像这样的数据结构:

  [
      { firstName: "John",
        lastName: "Johnson",
        _id: 23
      },
      { firstName: "John",
        lastName: "Johnson",
        _id: 23
      },
      { firstName: "Mary",
        lastName: "Smith",
        _id: 24
      }
  ]

...对于上面的数据集,我的totalUniqueIDs应该是2

如果我只是循环遍历数组并获取“_id”的总和,我会这样做:

let customersArray = docs.map(doc => doc._id);
let customersArrayLength = customersArray.length
console.log(customersArrayLength); // 3

这当然会给我 3 个结果。

在这种情况下,我怎样才能得到 unique _id(s) 的总和?我是否先将array 转换为set,然后找到lengthsize

最佳答案

另一种选择是使用 reduce 将数组汇总为一个对象,使用 _id 作为键。使用 Object.values 将对象转换回数组。

var arr = [{"firstName":"John","lastName":"Johnson","_id":23},{"firstName":"John","lastName":"Johnson","_id":23},{"firstName":"Mary","lastName":"Smith","_id":24}]

var result = Object.values(arr.reduce((c, v) => Object.assign(c, {[v._id]:v}), {}));

console.log(result.length);


另一种选择是使用 new Setsize 属性

var arr = [{"firstName":"John","lastName":"Johnson","_id":23},{"firstName":"John","lastName":"Johnson","_id":23},{"firstName":"Mary","lastName":"Smith","_id":24}]

var result = new Set(arr.map(o => o._id)).size;

console.log(result);

关于javascript - 从数组中获取唯一 ID 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106075/

相关文章:

php 代码未执行。已经检查过配置文件

c++ - 两个不同大小的硬编码数组到一个二维 vector 中

php - 需要帮助将 mysql_fetch_array 中的值插入到函数中

c - 这是一个可接受的 malloc 示例吗?

python - 使用正则表达式查询集合

python - 访问集合的唯一元素

Python:访问集合的成员

javascript - AngularJS 谷歌分析动态跟踪器

javascript - 可调页宽问题,JavaScript

javascript - document.querySelector 问题