如何获取连续元素数组对象的重复键值的计数?

为什么

我有一个数组结构:-

 var location = [ {
  "latitude" : 21.112,
  "longitude" : 79.07,
  "time" : "8:13AM",
  "time1" : "8:13AM"
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:20AM",
  "time1" : "8:20AM"
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:34AM",
  "time1" : "8:34AM"
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:41AM",
  "time1" : "8:41AM"
}, 
{
  "latitude" : 21.109,
  "longitude" : 79.07,
  "time" : "8:48AM",
  "time1" : "8:48AM"
}, 
{
  "latitude" : 21.108,
  "longitude" : 79.07,
  "time" : "8:55AM",
  "time1" : "8:55AM"
}, 
{
  "latitude" : 21.108,
  "longitude" : 79.069,
  "time" : "9:02AM",
  "time1" : "9:02AM"
}, 
{
  "latitude" : 21.107,
  "longitude" : 79.069,
  "time" : "9:09AM",
  "time1" : "9:09AM"
}, 
{
  "latitude" : 21.106,
  "longitude" : 79.069,
  "time" : "9:16AM",
  "time1" : "9:16AM"
}, 
{
  "latitude" : 21.105,
  "longitude" : 79.069,
  "time" : "9:23AM",
  "time1" : "9:23AM"
}, 
{
  "latitude" : 21.104,
  "longitude" : 79.069,
  "time" : "9:30AM",
  "time1" : "9:30AM"
}, 
{
  "latitude" : 21.105,
  "longitude" : 79.069,
  "time" : "9:37AM",
  "time1" : "9:37AM"
}, 
{
  "latitude" : 21.105,
  "longitude" : 79.07,
  "time" : "9:44AM",
  "time1" : "9:44AM"
}, 
{
  "latitude" : 21.105,
  "longitude" : 79.071,
  "time" : "9:51AM",
  "time1" : "9:51AM"
}, 
{
  "latitude" : 21.106,
  "longitude" : 79.072,
  "time" : "9:58AM",
  "time1" : "9:58AM"
}]

我要数不行。每个对象的经度和纬度时间相同。它应该仅使用附加的count键返回数组。对于例如-预期结果

var location = [ {
  "latitude" : 21.112,
  "longitude" : 79.07,
  "time" : "8:13AM",
  "time1" : "8:13AM",
  "count":1
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:20AM",
  "time1" : "8:20AM",
  "count":3
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:34AM",
  "time1" : "8:34AM",
  "count":3
}, 
{
  "latitude" : 21.111,
  "longitude" : 79.07,
  "time" : "8:41AM",
  "time1" : "8:41AM",
  "count":3
},..]

我已经尝试过此代码-

const resultarray = Object.values(location.reduce((a, b) => {
  a[b.latitude + b.longitude] = Object.assign(b, {count: (a[b.latitude + b.longitude] || {count: 0}).count + 1});
  return a;
}, {}));

console.log(resultarray)

但这会返回带有count的元素的唯一对象。我希望每个对象都具有关键计数。

妮娜·斯科茨(Nina Scholz)

您可以使用一个对象来计数发生次数,然后将计数映射到相同的位置。

const
    getKey = o => ['latitude', 'longitude'].map(k => o[k]).join('|'),
    locations = [{ latitude: 21.112, longitude: 79.07, time: "8:13AM", time1: "8:13AM" }, { latitude: 21.111, longitude: 79.07, time: "8:20AM", time1: "8:20AM" }, { latitude: 21.111, longitude: 79.07, time: "8:34AM", time1: "8:34AM" }, { latitude: 21.111, longitude: 79.07, time: "8:41AM", time1: "8:41AM" }, { latitude: 21.109, longitude: 79.07, time: "8:48AM", time1: "8:48AM" }, { latitude: 21.108, longitude: 79.07, time: "8:55AM", time1: "8:55AM" }, { latitude: 21.108, longitude: 79.069, time: "9:02AM", time1: "9:02AM" }, { latitude: 21.107, longitude: 79.069, time: "9:09AM", time1: "9:09AM" }, { latitude: 21.106, longitude: 79.069, time: "9:16AM", time1: "9:16AM" }, { latitude: 21.105, longitude: 79.069, time: "9:23AM", time1: "9:23AM" }, { latitude: 21.104, longitude: 79.069, time: "9:30AM", time1: "9:30AM" }, { latitude: 21.105, longitude: 79.069, time: "9:37AM", time1: "9:37AM" }, { latitude: 21.105, longitude: 79.07, time: "9:44AM", time1: "9:44AM" }, { latitude: 21.105, longitude: 79.071, time: "9:51AM", time1: "9:51AM" }, { latitude: 21.106, longitude: 79.072, time: "9:58AM", time1: "9:58AM" }],
    counts = locations.reduce((r, o) => {
        const key = getKey(o);
        r[key] = (r[key] || 0) + 1;
        return r;
    }, {}),
    result = locations.map(o => ({ ... o, count: counts[getKey(o)] }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算对象数组中键值的重复计数

来自分类Dev

如何获取没有对象元素重复的数组

来自分类Dev

设置条件时如何获取最后一个元素数组(删除重复数据)

来自分类Dev

如何使用php从对象获取数组键值

来自分类Dev

无论对象数组的深度如何,获取键值

来自分类Dev

从对象数组获取唯一元素数组

来自分类Dev

将2个元素数组的JavaScript数组转换为对象键值对

来自分类Dev

循环遍历对象数组,其中的元素包含可以重复的元素数组,然后返回match

来自分类Dev

如何获取char数组指向的元素数量?

来自分类Dev

如何获取JSON数组中的元素数量?

来自分类Dev

Lodash从对象数组获取键值

来自分类Dev

搜索重复元素数组

来自分类Dev

获取求和特定元素数组的元素

来自分类Dev

如何获取数组的键值和键值对

来自分类Dev

如何获取键值数组中的键值

来自分类Dev

如何获取对象内部数组元素的索引?

来自分类Dev

如何从对象数组中获取元素 (JavaScript)

来自分类Dev

如何从嵌套对象获取键值

来自分类Dev

如何从数组中获取键值?

来自分类Dev

从对象键返回元素数组

来自分类Dev

如何计算最大重复元素数?

来自分类Dev

如何从数组中获取特定元素并基于数组键值的比较创建一个新数组?

来自分类Dev

perl eval获取单元素数组

来自分类Dev

从findElement(By.className())获取元素数组

来自分类Dev

获取多个数组的总元素数

来自分类Dev

获取结构数组C ++中的元素数

来自分类Dev

如何用单个元素替换二维 numpy 数组中重复的连续元素

来自分类Dev

如何获取与JavaScript数组中的谓词匹配的元素计数?

来自分类Dev

当元素是 BigQuery StandardSql 中的对象时,如何计算数组中的元素数

Related 相关文章

  1. 1

    计算对象数组中键值的重复计数

  2. 2

    如何获取没有对象元素重复的数组

  3. 3

    设置条件时如何获取最后一个元素数组(删除重复数据)

  4. 4

    如何使用php从对象获取数组键值

  5. 5

    无论对象数组的深度如何,获取键值

  6. 6

    从对象数组获取唯一元素数组

  7. 7

    将2个元素数组的JavaScript数组转换为对象键值对

  8. 8

    循环遍历对象数组,其中的元素包含可以重复的元素数组,然后返回match

  9. 9

    如何获取char数组指向的元素数量?

  10. 10

    如何获取JSON数组中的元素数量?

  11. 11

    Lodash从对象数组获取键值

  12. 12

    搜索重复元素数组

  13. 13

    获取求和特定元素数组的元素

  14. 14

    如何获取数组的键值和键值对

  15. 15

    如何获取键值数组中的键值

  16. 16

    如何获取对象内部数组元素的索引?

  17. 17

    如何从对象数组中获取元素 (JavaScript)

  18. 18

    如何从嵌套对象获取键值

  19. 19

    如何从数组中获取键值?

  20. 20

    从对象键返回元素数组

  21. 21

    如何计算最大重复元素数?

  22. 22

    如何从数组中获取特定元素并基于数组键值的比较创建一个新数组?

  23. 23

    perl eval获取单元素数组

  24. 24

    从findElement(By.className())获取元素数组

  25. 25

    获取多个数组的总元素数

  26. 26

    获取结构数组C ++中的元素数

  27. 27

    如何用单个元素替换二维 numpy 数组中重复的连续元素

  28. 28

    如何获取与JavaScript数组中的谓词匹配的元素计数?

  29. 29

    当元素是 BigQuery StandardSql 中的对象时,如何计算数组中的元素数

热门标签

归档