Javascript - 清除数组对象中的重复项

2023-12-24

你好 我有一个 javascript 数组对象,表示在给定国家/地区销售的商品数量,如下所示:

var data = [{'c1':'USA', 'c2':'Item1', 'c3':100}, 
            {'c1':'Canada', 'c2':'Item1', 'c3':120},
            {'c1':'Italy', 'c2':'Item2', 'c3':140},
            {'c1':'Italy', 'c2':'Item2', 'c3':110}]

我需要避免重复(如您所见,最后两个“记录”具有相同的国家/地区和相同的项目)并对金额求和;如果我从数据库获取数据,我会使用 DISTINCT SUM 子句,但在这种情况下又如何呢? jquery有什么好的技巧吗?


您可以使用对象作为不同值的映射,如下所示:

var distincts, index, sum, entry, key;
distincts = {};
sum = 0;
for (index = 0; index < data.length; ++index) {
    entry = data[index];
    key = entry.c1 + "--sep--" + entry.c2;
    if (!distincts[key]) {
        distincts[key] = true;
        sum += entry.c3;
    }
}

这是如何运作的:JavaScript 对象是映射,并且由于对属性的访问是极其常见的操作,一个像样的 JavaScript 实现试图使属性访问变得相当快(通过对属性键使用散列,诸如此类的事情)。您可以使用字符串作为名称并使用方括号 ([]), so obj.foo and obj["foo"]两者都指的是foo的财产obj.

And so:

  1. 我们从一个没有属性的对象开始。
  2. 当我们循环遍历数组时,我们创建唯一的键c1 and c2。重要的是“--sep--”字符串应该是cannot出现在c1 or c2。如果情况不重要,你可能会抛出一个.toLowerCase在那里。
  3. If distincts该键已经有一个值,我们知道我们以前见过它并且可以忽略它;否则,我们添加一个值(true在这种情况下,但它可以是除false, undefined, 0, or "")作为一个标志,表明我们以前见过这种独特的组合。我们添加c3到总和。

但正如有人指出的,您的最后两个条目实际上并不相同;我猜这只是问题中的一个拼写错误......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript - 清除数组对象中的重复项 的相关文章

随机推荐

  • 指向结构成员的指针[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 手机是否仅使用 GPS 来获取其位置?

    我正在进行测试 我们正在比较 Android 手机和 GPS 设备的 GPS 位置 我们希望将其集成到我们的硬件中 但为了使测试准确 手机只需要使用 GPS 而不是手机信号塔和 WiFi 这是代码 我在其中设置手机使用哪种服务 Locati
  • 仅当调试器运行时防伪令牌异常

    我有一个 mvc2 应用程序 它通过 iframe 提供内容 iframed 页面只是一个表单 它有一个请求验证令牌 在开发人员使用 Visual Studio 2005 调试器之前 一切都可以跨域正常运行 一旦他们这样做 我就会收到以下错
  • 如何在本地安装 Haskell Stack?

    我正在学校服务器上工作 我需要安装 Haskell 的堆栈 在里面README https github com commercialhaskell stack blob master README md文件并在website https
  • iOS 应用程序开发建议。应用程序进入后台

    我正在享受 swift 的乐趣 并且正在尝试制作一个简单的游戏 我得到了一些在游戏过程中发生变化的变量 如果出现以下情况 保存这些变量的最佳实践是什么applicationDidEnterBackground对于所有其他功能appDeleg
  • 将矩阵并排放置以创建另一个矩阵

    我有一个由 12 个矩阵组成的数组 由以下代码给出 ma array sample 0 127 3 4 6 replace TRUE c 3 4 12 让他们被命名为A B C L 我想创建一个矩阵 其中上面的矩阵以 4 行 3 列的模式排
  • 应用程序被最近任务杀死后如何重新启动服务

    我创建了一项服务来定期获取设备的当前位置 我希望该服务在后台运行 即使该应用程序已从最近打开的应用程序中清除 目前 该服务仅在后台运行 直到应用程序出现在最近打开的应用程序中 但当应用程序被刷掉 或以其他方式终止 时 该服务会立即停止 我已
  • Numpy sum keepdims 错误

    Python 在矩阵上调用 numpy sum 函数时会抛出错误 probs exp scores np sum exp scores axis 1 keepdims True 错误 probs exp scores np sum exp
  • 奇怪的javascript变量重新赋值问题

    我有一个变量叫做data 它将数组带入函数 然后我决定继续仅使用数组的第一个元素 data 0 如果我执行以下任一操作 会有什么不同吗 重用 替换数组变量名data通过为其分配第一个元素 这将是 data data 0 并继续使用data
  • 如何禁用从移动浏览器上传文件的相机选项?

    我正在使用文件类型输入 它应该接受 pdf doc 和 docx 文件格式 所以我添加了以下输入标签
  • ViewCompat.setOnApplyWindowInsetsListener() 更改系统导航栏的背景

    应用程序通常有这样的导航栏 但是当我添加ViewCompat setOnApplyWindowInsetsListener ViewCompat setOnApplyWindowInsetsListener window decorView
  • 用户访问通讯录时崩溃报告

    在我的应用程序中 Crashlytics 用于收集用户的崩溃报告 这是来自用户的一份崩溃报告 这可能取决于用户的联系信息 我无法重现崩溃 因为我不知道他 她的联系人中有什么 有人对这种情况有想法吗 com apple root defaul
  • MongoDB:如何将嵌套数组分组到一个文档中?

    我有以下收藏 id 23423 dsfsdf 32423 name Proj1 services id sdfs 24423 sdf name P1 Service1 products id sdfs 24jhh sdf name P1 S
  • dart中的完整路径和相对路径有什么区别

    我开发了一个 flutter 应用程序 在 model 包中定义了多个模型 然后我声明一个类Example例如 在 模型 中 模型 示例 dart class Example override String toString return
  • C# 如何在控制台应用程序中制作水平条形图

    我需要制作一个水平条形图来表示直方图字典中数字的出现情况 我尝试过使用 Console BackgroundColor 但是 这显然只会使线条背景色变成蓝色 static void Main string args string Speac
  • 为什么 '\97' ascii 值等于 55

    就像C code include
  • 尝试序列化 avro 记录时,B 无法转换为 java.nio.ByteBuffer

    我编写了一个小型 Java 程序 该程序应该监视目录中的新文件并将它们以 binay Avro 格式发送到 Kafka 主题 我是 Avro 新手 我使用 Avro 文档和在线示例编写了这篇文章 监控部分运行良好 但程序在运行时到达 Avr
  • 使用 jQuery 在网页上突出显示字符串的字符

    我想使用 jQuery 在网页上某个值的索引处突出显示字符串的字符 该值是可变的 一次位于索引 2 下一次位于索引 3 var copy I am learning how to program letter text copy code
  • AttributeError:未知的属性密度[重复]

    这个问题在这里已经有答案了 我试图掌握 SciPy 但我被困住了Unknown property density错误 即使我从官方复制了整个代码SciPy 文档 https docs scipy org doc scipy referenc
  • Javascript - 清除数组对象中的重复项

    你好 我有一个 javascript 数组对象 表示在给定国家 地区销售的商品数量 如下所示 var data c1 USA c2 Item1 c3 100 c1 Canada c2 Item1 c3 120 c1 Italy c2 Ite