Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript在People数组中查找最年长的人_Javascript_Arrays - Fatal编程技术网

如何使用javascript在People数组中查找最年长的人

如何使用javascript在People数组中查找最年长的人,javascript,arrays,Javascript,Arrays,我正在尝试使用javascript中的.reduce()方法从数组中检索最年长的人。下面是数组。我正在努力为.reduce方法编写正确的语法来实现这一点。我正在使用的代码如下,我一直得到“未定义”的结果。我使用代码已经有一段时间了,我觉得我可能犯了一个简单的错误,但朝着正确的方向轻推会很有帮助 let findTheOldest = function(people) { let total = 0 people.reduce((prev, curr) => { if

我正在尝试使用javascript中的.reduce()方法从数组中检索最年长的人。下面是数组。我正在努力为.reduce方法编写正确的语法来实现这一点。我正在使用的代码如下,我一直得到“未定义”的结果。我使用代码已经有一段时间了,我觉得我可能犯了一个简单的错误,但朝着正确的方向轻推会很有帮助

let findTheOldest = function(people) {
  let total = 0
     people.reduce((prev, curr) => {
    if ((curr.yearOfDeath - curr.yearOfBirth) > total) {
    total = (curr.yearOfDeath - curr.yearOfBirth);
    }
    return prev;
  }, 0);
}
console.log(findTheOldest(people));

要使
reduce
起作用,您必须每次重新计算累加器的年龄(有些不雅),或者将其保存在外部变量中。然后,根据累加器或正在迭代的当前项是否具有更大的期限,在回调内返回:

const getAge=({yearOfBirth,yearOfDeath})=>yearOfDeath-yearOfBirth;
const findTheOldest=函数(人){
让accumAge=getAge(人[0]);
返回人员。减少((累计,当前)=>{
const currAge=getAge(curr);
如果(货币>累计){
accumAge=货币;
返回货币;
}
返回累计;
});
}
康斯特人=[{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]

console.log(查找最年长的(人))对于
reduce
要工作,您必须每次重新计算累加器的年龄(有点不雅观),或者将其保存在外部变量中。然后,根据累加器或正在迭代的当前项是否具有更大的期限,在回调内返回:

const getAge=({yearOfBirth,yearOfDeath})=>yearOfDeath-yearOfBirth;
const findTheOldest=函数(人){
让accumAge=getAge(人[0]);
返回人员。减少((累计,当前)=>{
const currAge=getAge(curr);
如果(货币>累计){
accumAge=货币;
返回货币;
}
返回累计;
});
}
康斯特人=[{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]

console.log(查找最年长的(人))您可以使用reduce。虽然它很难看,但它将代码缩短了很多=)

const people=[
{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]
const res=people.reduce((preval,curVal)=>{
返回prevVal.yearOfDeath-prevVal.yearOfBirthconsole.log(res.name,res.yearOfDeath-res.yearOfBirth)您可以使用reduce。虽然它很难看,但它将代码缩短了很多=)

const people=[
{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]
const res=people.reduce((preval,curVal)=>{
返回prevVal.yearOfDeath-prevVal.yearOfBirthconsole.log(res.name,res.yearOfDeath-res.yearOfBirth)您未定义,因为函数查找最早的函数时只返回nothing。
如果您想保留函数并使用变量总数(不是非常优化),您需要像这样返回最老的人:

let findTheOldest = function(people) {
  let total = 0
  let OldestPerson = {}
  people.reduce((prev, curr) => {
    if ((curr.yearOfDeath - curr.yearOfBirth) > total) {
      total = (curr.yearOfDeath - curr.yearOfBirth);
      OldestPerson = curr
    }
    return prev;
  })
  return OldestPerson
}

您没有定义,因为函数找到了最早的函数,但没有返回任何内容。
如果您想保留函数并使用变量总数(不是非常优化),您需要像这样返回最老的人:

let findTheOldest = function(people) {
  let total = 0
  let OldestPerson = {}
  people.reduce((prev, curr) => {
    if ((curr.yearOfDeath - curr.yearOfBirth) > total) {
      total = (curr.yearOfDeath - curr.yearOfBirth);
      OldestPerson = curr
    }
    return prev;
  })
  return OldestPerson
}

您还可以使用比较器按照您想要的顺序对整个数组进行排序,并获得第一个元素。具有讽刺意味的是,此链接中提供的示例与我们这里的示例几乎相同:

不使用reduce,但认为这很有趣

const people=[{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]
constOldestPeople=people.sort(函数a,b){
const lastPerson=a.死亡年-a.出生年;
const nextPerson=b.死亡年-b.出生年;
如果(最后一个人>下一个人){
返回-1;
}否则{
返回1;
}
});

console.log(人员[0])您也可以使用比较器按所需顺序对整个数组进行排序,并获得第一个元素。具有讽刺意味的是,此链接中提供的示例与我们这里的示例几乎相同:

不使用reduce,但认为这很有趣

const people=[{
姓名:'卡莉',
出生年份:1942年,
死亡年份:1970年,
},
{
名字:'雷',
出生年份:1962年,
死亡年份:2011年
},
{
姓名:'简',
出生年份:1912年,
死亡年份:1941年
},
]
constOldestPeople=people.sort(函数a,b){
const lastPerson=a.死亡年-a.出生年;
const nextPerson=b.死亡年-b.出生年;
如果(最后一个人>下一个人){
返回-1;
}否则{
返回1;
}
});

console.log(人员[0])