查找最小值和最大值键嵌套对象

时间:2018-11-20 08:33:44

标签: javascript reduce

我有一个带有多个嵌套的对象。每个对象都有自己的键,即iq,名称,total。例如,必须找到iq的最大值和最小值。关键子对象可能是,也可能不是。

let infoList= {
    name: Jone,
    iq: 130,
    children: [{
        name: Joy,
        iq: 121,
        children: [{
            name: Ross,
            iq: 110,
            children: [{
                ....
            }]
        }]
    }]
}

1 个答案:

答案 0 :(得分:2)

这是一个递归解决方案。请注意,我将名称更改为字符串。

let infoList= {
    name: 'Jone',
    iq: 130,
    children: [{
        name: 'Joy',
        iq: 121,
        children: [{
            name: 'Ross',
            iq: 110,
            children: [{ name: 'Joe', iq: 20 }]
        }]
    }]
}

function ancestorIQs(person) {
  let arr = [person.iq];
  if (!person.children) return arr;
  return person.children.reduce(function (iqs, child) {
    return iqs.concat(ancestorIQs(child));
  }, arr);
}

let result = ancestorIQs(infoList);

console.log(Math.min(...result)); // 20
console.log(Math.max(...result)); // 130