【问题标题】:how to write a function that takes a list of names and return the oldest name?如何编写一个获取名称列表并返回最旧名称的函数?
【发布时间】:2022-01-20 02:21:36
【问题描述】:
  1. 从给定的名称列表中获取最早的名称。 例子: list = ["Tom","Jim","Kerry","John"]
  2. 给出下面的 API 来获取一个名字的年龄: 获取https://api.agify.io/?name={name}
  3. 响应格式:{"name":"dawei","age":54,"count":143}

任务是在 node.js 中编写一个函数来获取名称列表并返回最旧的名称

我已经写了下面的代码-

function getOldest(list){
  let oldest;
  let listOfPromises = list.map((name) => {
    callAPI(name);
  });
  
  let resp = [];
  Promise.all([listOfPromises]).then(function (resArr) {
    resp = resArr;
  }, function (err) {
     throw err;
  })

  resp.sort((a, b) => {
    a.age > b.age;
  })
  oldest = resp[0].name;
    
  return  oldest
}

function callAPI(name) {
  let url = `https://api.agify.io/?name=${name}`;
  return new Promise((resolve, reject) => {
    request.get(url, (err, res, body) => {
      if (err) {
        return reject(err);
      } else {
        resolve(body.data);
      }
    })
  })
}

let list = ["Tom", "Jim", "Kerry", "John"];
getOldest(list);
}

有没有更好的方法来做同样的事情?

【问题讨论】:

标签: node.js api


【解决方案1】:

不包括重复值

const arrayOfNames = [
  {
    name: "Alice",
    age: 40,
    count: 120238
  },
  {
    name: "Damian",
    age: 70,
    count: 120238
  },
  {
    name: "Tom",
    age: 60,
    count: 120238
  },
  {
    name: "Sam",
    age: 30,
    count: 120238
  }
];

const getOldestName = (names) => {
  const ages= [];
  for (let name of names) {
    ages.push(name.age);
  }
  const highestAge = Math.max(...ages);
  return names.find((element) => element.age === highestAge);
};
console.log(getOldestName(arrayOfNames));

【讨论】:

  • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多