Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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/json/13.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 如何在JSON中查找最年长者的年龄_Javascript_Json - Fatal编程技术网

Javascript 如何在JSON中查找最年长者的年龄

Javascript 如何在JSON中查找最年长者的年龄,javascript,json,Javascript,Json,假设对象不是按升序排列的,请建议我如何在下面的JSON中查找最年长者的年龄(摘自雄辩的javascript书籍) 我的剧本: //get the oldest person function reduce2(array, combine, start){ var current = start; for(var i=0; i< array.length; i++){ current = combine(current, array[i]); } return

假设对象不是按升序排列的,请建议我如何在下面的JSON中查找最年长者的年龄(摘自雄辩的javascript书籍

我的剧本:

//get the oldest person 

function reduce2(array, combine, start){

  var current = start;
  for(var i=0; i< array.length; i++){
    current = combine(current, array[i]);
  }
  return current;
}

function map(array, transform) { 
  var mapped = []; 
  for (var i = 0; i < array.length; i++) 
    mapped.push(transform(array[i])); return mapped;
     }


function forEach(array, action) { 
  for (var i = 0; i < array.length; i++) action(array[i]); 
}

console.log(forEach(ANCESTRY_FILE, function(){
  reduce2(a, b){...don't know what to do};
}));
//找到最年长的人
函数reduce2(数组、合并、启动){
无功电流=启动;
对于(var i=0;i
var array=JSON.parse(祖先文件)//创建JSON数组
温度=2016年//设置temp的当前年份
对于(i=0;i此代码假定“最老的”意味着“死亡时最老的”。它输出的是最老的人,而不是年龄。(您只需执行
oldest.dead-oldest.born
即可获得年龄。)

var祖先=JSON.parse(祖先_文件);
功能隔离器(a、b){
报税表(a.死亡-a.出生)>(b.死亡-b.出生);
}
var=null;
对于(变量i=0;i<0.length;i++){
var祖先=祖先[i];
if(最早===null | | isOlder(祖先,最早)){
最老的=祖先;
}
}
console.log(最早的);
//输出:
//{名称:'Clara Aernoudts',
//性别:'f',
//出生日期:1918年,
//死亡时间:2012年,
//父亲:“亨利·艾尔努兹”,
//母亲:“西多妮·科恩”
更新

如果您真的只想要最大年龄(而不是那个年龄的人),那么以下代码是一种更简单的方法:

var ancestors = JSON.parse(ANCESTRY_FILE);

var maxAge = null;
for (var i = 0; i < ancestors.length; i++) {
    var ancestor = ancestors[i];
    var age = ancestor.died - ancestor.born;
    if (maxAge === null || age > maxAge) {
        maxAge = age;
    }
}
console.log(maxAge); // 94
var祖先=JSON.parse(祖先_文件);
var-maxAge=null;
对于(变量i=0;i<0.length;i++){
var祖先=祖先[i];
var age=祖先。死亡-祖先。出生;
if(maxAge==null | | age>maxAge){
最大年龄=年龄;
}
}
console.log(maxAge);//94

您的数据结构错误。您应该从文件中读取JSON,或者只使用对象,而不是字符串

这是一支钢笔:

这是找到最大年龄的工作代码:

var obj = JSON.parse(ANCESTRY_FILE);
var person;
var max = -Infinity;
obj.forEach(function(val) {
  var age = val.died - val.born;
  if(age > max) {
    max = age;
    person = val;
  }
});
alert(max);

(person变量用于知道谁是最年长的人..)

对数组排序并打印第一个元素。 因此,实际代码非常简单:

ANCESTRY_FILE.sort(function(b,a) {
   return (a.died - a.born) - (b.died - b.born)
});
var祖先_文件=“[\n”+[
“{”姓名“:”卡洛斯·哈弗贝克“,”性别“:”m“,”出生“:1832“,”死亡“:1905“,”父亲“:”卡雷尔·哈弗贝克“,”母亲“:”玛丽亚·凡·布鲁塞尔“}”,
{“姓名”:“Emma de Milliano”,“性别”:“f”,“出生”:1876,“死亡”:1956,“父亲”:“Petrus de Milliano”,“母亲”:“Sophia van Damme”},
{“姓名”:“Maria de Rycke”,“性别”:“f”,“出生”:1683,“死亡”:1724,“父亲”:“Frederik de Rycke”,“母亲”:“Laurentia van Vlaenderen”},
“{”姓名“:”扬·范·布鲁塞尔“,”性别“:”m“,”出生“:1714“,”死亡“:1748“,”父亲“:”雅各布斯·范·布鲁塞尔“,”母亲“:”乔安娜·范·罗滕“}”,
“{”姓名“:”菲利伯特·哈弗贝克“,”性别“:”m“,”出生“:1907“,”死亡“:1997“,”父亲“:”埃米尔·哈弗贝克“,”母亲“:”埃玛·德·米利亚诺“}”,
“{”姓名“:“Jan Frans van Brussel”,“性别“:“m”,“出生”:1761,“死亡”:1833,“父亲”:“Jacobus Bernardus van Brussel”,“母亲”:null}”,
{“姓名”:“Pauwels van Haverbeke”,“性别”:“m”,“出生”:1535,“死亡”:1582,“父亲”:“N.van Haverbeke”,“母亲”:null},
“{”姓名“:”克拉拉·艾尔努兹“,”性别“:”f“,”出生:1918,“死亡:2012“,”父亲“:”亨利·艾尔努兹“,”母亲“:”西多尼·科恩“}”,
“{”姓名“:”埃米尔·哈弗贝克“,”性别“:”m“,”出生“:1877“,”死亡“:1968“,”父亲“:”卡洛斯·哈弗贝克“,”母亲“:”玛丽亚·斯图姆“}”,
{“姓名”:“Lieven de Causmaecker”,“性别”:“m”,“出生”:1696,“死亡”:1724,“父亲”:“Carel de Causmaecker”,“母亲”:“Joanna Claes”},
{“姓名”:“Pieter Haverbeke”,“性别”:“m”,“出生”:1602,“死亡”:1642,“父亲”:“Lieven van Haverbeke”,“母亲”:null},
{“姓名”:“Livina Haverbeke”,“性别”:“f”,“出生”:1692,“死亡”:1743,“父亲”:“Daniel Haverbeke”,“母亲”:“Joanna de Pape”},
“{”姓名“:”彼得·伯纳德·哈弗贝克“,”性别“:”m“,”出生“:1695“,”死亡“:1762“,”父亲“:”威廉·哈弗贝克“,”母亲“:”彼得内拉·沃特斯“}”,
{“姓名”:“Lieven van Haverbeke”,“性别”:“m”,“出生”:1570,“死亡”:1636,“父亲”:“Pauwels van Haverbeke”,“母亲”:“Lievijne Jans”},
“{”姓名“:”乔安娜·德·考斯梅克“,”性别“:”f“,”出生“:1762“,”死亡“:1807,“父亲“:”伯纳德·德·考斯梅克“,”母亲“:空}”,
{“姓名”:“威廉·哈弗贝克”,“性别”:“m”,“出生”:1668,“死亡”:1731,“父亲”:“列文·哈弗贝克”,“母亲”:“伊丽莎白·赫克”},
“{”姓名“:”皮特·安东·哈弗贝克“,”性别“:”m“,”出生“:1753“,”死亡“:1798“,”父亲“:”简·弗朗西斯·哈弗贝克“,”母亲“:”彼得内拉·德克尔“}”,
“{”姓名“:”玛丽亚·范·布鲁塞尔“,”性别“:”f“,”出生“:1801“,”死亡“:1834“,”父亲“:”扬·弗朗斯·范·布鲁塞尔“,”母亲“:”乔安娜·德·考斯梅克尔“}”,
{“姓名”:“安吉拉·哈弗贝克”,“性别”:“f”,“出生”:1728,“死亡”:1734,“父亲”:“彼得·伯纳德·哈弗贝克”,“母亲”:“利维纳·德弗里泽”},
{“姓名”:“伊丽莎白·哈弗贝克”,“性别”:“f”,“出生”:1711,“死亡”:1754,“父亲”:“扬·哈弗贝克”,“母亲”:“玛丽亚·德莱克”},
{“姓名”:“Lievijne Jans”,“性别”:“f”,“出生”:1542,“死亡”:1582,“父亲”:无效,“母亲”:无效},
“{”姓名“:”伯纳德·德·考斯梅克“,”性别“:”m“,”出生“:1721年,“死亡“:1789年,“父亲“:”列文·德·考斯梅克“,”母亲“:”利维纳·哈弗贝克“}”,
“{”姓名“:”雅各巴·拉门斯“,”性别“:”f“,”出生“:1699“,”死亡“:1740“,”父亲“:”列文·拉门斯“,”母亲“:”利维纳·德弗里泽“}”,
“{”姓名“:“Pieter de Decker”,“性别“:“m”,“出生”:1705,“死亡”:1780,“父亲”:“Joos de Decker”,“母亲”:“Petronella van de Steene”}”,
{“姓名”:“乔安娜·德帕普”,“性别”:“f”,“出生”:1654,“死亡”:1723,“父亲”:“文森特·德帕普”,“母亲”:“佩特罗内拉·沃特斯”},
{“姓名”:“丹尼尔·哈弗贝克”,“性别”:“m”,“出生”:1652,“死亡”:1723,“父亲”:“列文·哈弗贝克”,“母亲”:“伊丽莎白·赫克”},
{“姓名”:“列文·哈弗贝克”
var ancestors = JSON.parse(ANCESTRY_FILE);

var maxAge = null;
for (var i = 0; i < ancestors.length; i++) {
    var ancestor = ancestors[i];
    var age = ancestor.died - ancestor.born;
    if (maxAge === null || age > maxAge) {
        maxAge = age;
    }
}
console.log(maxAge); // 94
var obj = JSON.parse(ANCESTRY_FILE);
var person;
var max = -Infinity;
obj.forEach(function(val) {
  var age = val.died - val.born;
  if(age > max) {
    max = age;
    person = val;
  }
});
alert(max);
ANCESTRY_FILE.sort(function(b,a) {
   return (a.died - a.born) - (b.died - b.born)
});
var x=[
  '{"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"}',
  '{"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"}',
  '{"name": "Maria de Rycke", "sex": "f", "born": 1683, "died": 1724, "father": "Frederik de Rycke", "mother": "Laurentia van Vlaenderen"}',
  '{"name": "Jan van Brussel", "sex": "m", "born": 1714, "died": 1748, "father": "Jacobus van Brussel", "mother": "Joanna van Rooten"}',
  '{"name": "Philibert Haverbeke", "sex": "m", "born": 1907, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"}',
  '{"name": "Jan Frans van Brussel", "sex": "m", "born": 1761, "died": 1833, "father": "Jacobus Bernardus van Brussel", "mother":null}',
  '{"name": "Pauwels van Haverbeke", "sex": "m", "born": 1535, "died": 1582, "father": "N. van Haverbeke", "mother":null}',
  '{"name": "Clara Aernoudts", "sex": "f", "born": 1918, "died": 2012, "father": "Henry Aernoudts", "mother": "Sidonie Coene"}',
  '{"name": "Emile Haverbeke", "sex": "m", "born": 1877, "died": 1968, "father": "Carolus Haverbeke", "mother": "Maria Sturm"}',
  '{"name": "Lieven de Causmaecker", "sex": "m", "born": 1696, "died": 1724, "father": "Carel de Causmaecker", "mother": "Joanna Claes"}',
  '{"name": "Pieter Haverbeke", "sex": "m", "born": 1602, "died": 1642, "father": "Lieven van Haverbeke", "mother":null}',
  '{"name": "Livina Haverbeke", "sex": "f", "born": 1692, "died": 1743, "father": "Daniel Haverbeke", "mother": "Joanna de Pape"}',
  '{"name": "Pieter Bernard Haverbeke", "sex": "m", "born": 1695, "died": 1762, "father": "Willem Haverbeke", "mother": "Petronella Wauters"}',
  '{"name": "Lieven van Haverbeke", "sex": "m", "born": 1570, "died": 1636, "father": "Pauwels van Haverbeke", "mother": "Lievijne Jans"}',
  '{"name": "Joanna de Causmaecker", "sex": "f", "born": 1762, "died": 1807, "father": "Bernardus de Causmaecker", "mother":null}',
  '{"name": "Willem Haverbeke", "sex": "m", "born": 1668, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"}',
  '{"name": "Pieter Antone Haverbeke", "sex": "m", "born": 1753, "died": 1798, "father": "Jan Francies Haverbeke", "mother": "Petronella de Decker"}',
  '{"name": "Maria van Brussel", "sex": "f", "born": 1801, "died": 1834, "father": "Jan Frans van Brussel", "mother": "Joanna de Causmaecker"}',
  '{"name": "Angela Haverbeke", "sex": "f", "born": 1728, "died": 1734, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"}',
  '{"name": "Elisabeth Haverbeke", "sex": "f", "born": 1711, "died": 1754, "father": "Jan Haverbeke", "mother": "Maria de Rycke"}',
  '{"name": "Lievijne Jans", "sex": "f", "born": 1542, "died": 1582, "father":null, "mother":null}',
  '{"name": "Bernardus de Causmaecker", "sex": "m", "born": 1721, "died": 1789, "father": "Lieven de Causmaecker", "mother": "Livina Haverbeke"}',
  '{"name": "Jacoba Lammens", "sex": "f", "born": 1699, "died": 1740, "father": "Lieven Lammens", "mother": "Livina de Vrieze"}',
  '{"name": "Pieter de Decker", "sex": "m", "born": 1705, "died": 1780, "father": "Joos de Decker", "mother": "Petronella van de Steene"}',
  '{"name": "Joanna de Pape", "sex": "f", "born": 1654, "died": 1723, "father": "Vincent de Pape", "mother": "Petronella Wauters"}',
  '{"name": "Daniel Haverbeke", "sex": "m", "born": 1652, "died": 1723, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"}',
  '{"name": "Lieven Haverbeke", "sex": "m", "born": 1631, "died": 1676, "father": "Pieter Haverbeke", "mother": "Anna van Hecke"}',
  '{"name": "Martina de Pape", "sex": "f", "born": 1666, "died": 1727, "father": "Vincent de Pape", "mother": "Petronella Wauters"}',
  '{"name": "Jan Francies Haverbeke", "sex": "m", "born": 1725, "died": 1779, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"}',
  '{"name": "Maria Haverbeke", "sex": "m", "born": 1905, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"}',
  '{"name": "Petronella de Decker", "sex": "f", "born": 1731, "died": 1781, "father": "Pieter de Decker", "mother": "Livina Haverbeke"}',
  '{"name": "Livina Sierens", "sex": "f", "born": 1761, "died": 1826, "father": "Jan Sierens", "mother": "Maria van Waes"}',
  '{"name": "Laurentia Haverbeke", "sex": "f", "born": 1710, "died": 1786, "father": "Jan Haverbeke", "mother": "Maria de Rycke"}',
  '{"name": "Carel Haverbeke", "sex": "m", "born": 1796, "died": 1837, "father": "Pieter Antone Haverbeke", "mother": "Livina Sierens"}',
  '{"name": "Elisabeth Hercke", "sex": "f", "born": 1632, "died": 1674, "father": "Willem Hercke", "mother": "Margriet de Brabander"}',
  '{"name": "Jan Haverbeke", "sex": "m", "born": 1671, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"}',
  '{"name": "Anna van Hecke", "sex": "f", "born": 1607, "died": 1670, "father": "Paschasius van Hecke", "mother": "Martijntken Beelaert"}',
  '{"name": "Maria Sturm", "sex": "f", "born": 1835, "died": 1917, "father": "Charles Sturm", "mother": "Seraphina Spelier"}',
  '{"name": "Jacobus Bernardus van Brussel", "sex": "m", "born": 1736, "died": 1809, "father": "Jan van Brussel", "mother": "Elisabeth Haverbeke"}'
];
var maxAgeObj= {};
var maxAge=0;
for(var i=0; i<x.length;i++){
    var obj = JSON.parse(x[i]);
    var age= obj.died-obj.born;

  if(age>maxAge){
    maxAge= age;
    maxAgeObj = obj;
  }
}
console.log(maxAgeObj);