计算JavaScript中引文的h索引

假设我们有一个正整数数组,它们代表特定研究人员在一段时间内进行的引用次数。

我们需要编写一个接受一个这样的数组的JavaScript函数,并且该函数应该根据该数组表示的引文数据找到该研究人员的h-index。

H指数:

考虑一位在其职业生涯中被引用过N次的研究人员。然后,如果他/她的N篇论文中的h篇至少被h引用,而其他N - h篇论文每篇不被h引用,则研究者具有索引h。

例如-

如果citations数组是-

const arr = [1, 6, 3, 0, 5];

该数据表明研究人员总共有5篇论文,每篇论文分别获得了1、6、3、0、5次引用。

而且由于研究人员拥有3篇论文,每篇论文至少被引3篇,其余两篇论文每篇被引用不超过3篇,因此h指数为3。

因此,此数组的输出应为-

const output = 3;

示例

以下是代码-

const arr = [1, 6, 3, 0, 5];
const findHIndex = (arr = []) => {
   let possible = [];
   let { length: len } = arr;
   if (len === 0){
      return 0;
   };
   possible.length = len + 2;
   possible = possible.join('-').split('').map(() => 0);
   for (let i = 0; i < len; i ++) {
      let val = arr[i];
      let ind = val > len ? len : val;
      possible[ind] += 1;
   }
   let result = 0;
   for (let k = len; k >= 0; k --) {
      result += possible[k];
      if (result >= k) {
         return k;
      }
   }
};
console.log(findHIndex(arr));
输出结果

以下是控制台输出-

3