笔试题:统计会几种语言的有几人

274 阅读1分钟

题目描述:

给定一个数组,数组中每一项的第一个元素是姓名,第二个元素是他会使用的语言。同一个人可能会出现多次,因为他们可能会使用多种语言。希望你编写一个函数统计出:有多少个人会使用“n”种语言。输出结果需要根据语言的种类进行排序。 注意:输出结果需要是一个对象,其中key值代表几种语言,value代表有几个人会这几种语言。 输出样例

{
    3:1
}

以上输出意思是:会使用3种语言的有1人。

function solution(known_languages){
    // 编写你的代码
}
function main() {
  let test_case = [    ["barackobama", "rust"],
    ["barackobama", "clojure"],
    ["barackobama", "clojure"],
    ["cristiano", "typescript"],
    ["rihanna", "rust"],
    ["cristiano", "java"],
    ["taylorswift", "java"],
    ["taylorswift", "rust"],
    ["taylorswift", "swift"]
  ];
}
let result = solution(test_case);
console.log(result);

解答:

function solution(known_languages) {
  // 编写你的代码
  let temp = {};
  known_languages.forEach((item) => {
    let [people, language] = item;
    if (!temp[people]) {
      temp[people] = new Set();
    }
    temp[people].add(language);
  });
  let res = {};
  Object.values(temp).forEach((item) => {
    const size = item.size;
    res[size] = 1 + (res[size] || 0);
  });
  return res;
}

题目的测试用例最终输出结果为:

{
  1:1,
  2:2,
  3:1
}