合并数组中的对象并保留相同属性的最高值

2024-02-22

我有这个数组,我想合并其中的对象。

[null, null, {"1":1},{"2":1},{"3":1},{"2":2},{"5":1}]

我考虑过使用这样的东西:

var o1 = { a: 1, b: 1, c: 1 };
var o2 = { b: 2, c: 2 };
var o3 = { c: 3 };

var obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }

但是,这些属性会被具有相同属性的其他对象覆盖后面的参数顺序

我想要的是保留最高值可用于同一财产。

在我的例子中,我有{"2":1} and {"2":2},我想保留{"2":2}因为2是可用的最高值"2"财产。

我想最终得到这个对象:{"1":1,"2":2,"3":1,"5":1}.


Use Array#reduce将数组转换为对象,并使用迭代数组中每个对象的键Array#forEach.

注意:我已更新您的测试用例,使其在较低值之前具有较高的值,以更好地演示解决方案。

const arr = [null, null, {"1":0},{"2":3},{"5": 25},{"3":1},{"2":2},{"5":1},{"1":-5}];

const result = arr.reduce((r, o) => {
  if(!typeof(o) === 'object' || o === null) {
    return r;
  }
  
  Object.keys(o) // iterate the keys
    .forEach((key) => r[key] = r[key] !== undefined ? Math.max(r[key], o[key]) : o[key]); // get the greatest value
  
  return r;
}, {});

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

合并数组中的对象并保留相同属性的最高值 的相关文章

随机推荐

  • Dagger 2 基类注入

    在 Dagger 1 中 我有一个基类设置 以便它可以处理创建作用域图并将依赖项注入当前对象 例如 public abstract class MyBaseActivity extends Activity private ObjectGr
  • 如何查看通道消费者引发的异常

    我开始使用django channels我觉得这太棒了 然而 调试消费者是痛苦的 因为当消费者内部引发一些异常时 没有任何内容打印到终端 websocket 只是断开连接 未显示的异常类型不易识别 系统地情况是这样的AssertionErr
  • 为 Android 构建 ltrace

    我正在尝试为 Android 构建 ltrace 我尝试了几种方法都没有效果 我能够使用 crosstool ng 的 arm unknown linux gnueabi 生成一个编译源代码的 bin 文件 并且 configure hos
  • PHP json_encode 不会转义所有 JSON 控制字符

    PHP的json encode函数没有转义所有原因吗JSON http www json org 字符串中的控制字符 例如 我们采用一个跨越两行并包含控制字符 r n 的字符串 请注意 回车符和换行符是未转义的 为什么 我使用 jQuery
  • 在迭代列表时将元素添加到列表中。 (Java)[重复]

    这个问题在这里已经有答案了 可能的重复 Java 在迭代期间向集合添加元素 https stackoverflow com questions 993025 java adding elements to a collection duri
  • C++ - 如何截屏(某些窗口除外)

    情况 我有一个通过 Internet 执行屏幕共享的软件 其中一个用户充当演示者 其他用户充当观众 与会者 除了演示窗口之外 演示者还会在屏幕上显示一组非共享窗口 用于开始共享 停止共享等的按钮栏 Skype 窗口等 演示者可以通过屏幕共享
  • 在 C++ 中扩展枚举?

    C 有没有办法扩展 继承 枚举 I E enum Enum A B C enum EnumEx public Enum D E F 或者至少定义它们之间的转换 不 那里没有 enum确实是 C 中的可怜之处 这当然是不幸的 即便是class
  • 包含conj的接口?

    作为练习 我正在开发一个类似于 Vector 的数据结构 我已经实现了 IPercientVector 扩展的所有接口 但我还没有找到定义 conj 的接口 那是哪个界面 谢谢 clojure lang IPersistentCollect
  • 与push()相反; [复制]

    这个问题在这里已经有答案了 JavaScript 的反义词是什么push method 假设我有一个数组 var exampleArray remove 我想要push 这个单词 keep exampleArray push keep 如何
  • “职称级别不一致”是什么意思?

    我在我的文档版本中收到了各种 标题级别不一致 的警告 据我所知 我有一个一致的结构 如下所示 Big Title Section Subsection 但该错误与自动生成相关 automodapi 我无法找到的文本 Classes 我怎样才
  • WP7从Tombstone恢复并返回页面

    从逻辑删除恢复时 是否有一种很好 优雅的方式返回用户所在的页面 我不确定我的应用程序是否正常工作 但我总是回到我的主页 我的应用程序设置了一个带有枢轴控件的主页 并且多个枢轴项目将导航到新页面 如果有意义的话 我的导航看起来像这样 数据透视
  • 谷歌放置自动完成API Android:边界不起作用

    我定义我的界限如下 private static final LatLngBounds BOUNDS CHENNAI new LatLngBounds new LatLng 12 8339547 80 0817007 new LatLng
  • Kubernetes 自动缩放容器

    是否可以自动缩放 docker 容器 其中包含 kubernetes 内的应用程序服务器 如 wildfly tomcat jetty 例如在 cpu 和 ram 使用或基于 http 请求 如果有一个内置功能 我找不到它 或者是否可以为此
  • 使用 PHP 实现 2 路加密的最佳方法是什么?

    我想在 PHP 中使用双向加密来加密我网站上的密码 我遇到过 mcrypt 库 但它看起来很麻烦 有人知道其他更简单但安全的方法吗 我确实可以访问 Zend Framework 因此使用它的解决方案也可以 我实际上需要双向加密 因为我的客户
  • 使用 ThreadStatic 来替换昂贵的本地变量——好主意吗?

    Update 正如我预料的那样 社区针对这个问题给出的合理建议是 衡量一下然后看看 chibacity 发布了 答案 https stackoverflow com questions 4864974 using threadstatic
  • 以编程方式在 Android 中配置第 3 方电子邮件帐户 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 禁用 JQuery 移动 UI 中的哈希更改控制器并替换为backbone.js

    我在用着jQuery 移动用户界面widgit 套件很不错 不过我也使用backbone js 它带有一个非常简洁的hashchange 控制器框架 问题是 JQuery Mobile UI 有一个内置的蹩脚哈希更改控制器 它假设您会alw
  • jQuery 缓动函数中有哪些不同的参数

    我看到 jQuery 的缓动函数位于https github com danro jquery easing blob master jquery easing js https github com danro jquery easing
  • 事务与批量查询以避免重复的 MySQL 插入

    我有一个PHP脚本 deleteAndReInsert php 删除所有行name Bob 然后插入 1000 个新行name Bob 这工作正常 最初的空表最终达到预期的 1000 行 query pdo gt prepare DELET
  • 合并数组中的对象并保留相同属性的最高值

    我有这个数组 我想合并其中的对象 null null 1 1 2 1 3 1 2 2 5 1 我考虑过使用这样的东西 var o1 a 1 b 1 c 1 var o2 b 2 c 2 var o3 c 3 var obj Object a