javascript - 查找嵌套对象中的最小值和最大值

标签 javascript reduce

我有一个深度嵌套的 javascript 对象,其子对象的数量不受限制。每个 child 都有其值(value)。

var object = {
     value: 1,
     children: {
      value: 10,
      children:{
       value: 2,
       children: {...}
      } 
     }
}

所有创建递归函数的尝试都没有成功,结果只是下降到较低的级别。

最佳答案

将链表展平为数组后,您可以使用 Array.prototype.reduce()累加器是 minmax 的元组,分别从 Infinity-Infinity 的初始值开始匹配 Math.min() 的实现和 Math.max() :

const object = {
  value: 1,
  children: {
    value: 10,
    children: {
      value: 2,
      children: {
        value: 5,
        children: null
      }
    }
  }
}

const flat = o => o == null || o.value == null ? [] : [o.value, ...flat(o.children)]
const [min, max] = flat(object).reduce(
  ([min, max], value) => [Math.min(min, value), Math.max(max, value)],
  [Infinity, -Infinity]
)

console.log(min, max)

关于javascript - 查找嵌套对象中的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379069/

相关文章:

javascript - RxJs 5 share() 运算符如何工作?

javascript - Magento 添加到购物车按钮,单页结帐仅在刷新浏览器后才起作用

javascript - 将对象数组减少为具有相同对象的参数

Hadoop Map-Reduce ,需要将两个mapper与一个普通的Reducer结合起来

python - Reduce 函数不处理空列表

algorithm - 使用 Map/Reduce 算法对单词进行计数

javascript - 在文本区域中找到超链接的现有编号 设置下一个可用的编号保存/单击模式

javascript - JavaScript 中的语法 function() { name = function() {} 是什么意思?

php 相当于 $.get

hadoop - 将为 Hive 中的分区表创建多少个映射器和缩减器