使用 JavaScript 计算等于或大于循环中索引的元素数
Using JavaScript count the number of elements equal to or higher than the index in a loop
我正在开发一个 JavaScript 函数,它可以创建 authors- H-Index。 H-Index 是一位作者在其他文章中被引用次数最多的出版物。我有
let array = [0,0,0,1,1,2,3,3,5,6,6,7,20,20,20]
这是按升序排列的被引文章数
我需要循环数组直到索引大于等于或大于索引的项目数
比如
for (let i = 1; i < array.length; i++){
count all items that are above i (0's get skipped)
if there are more than i then loop to next i if not exit with i - 1
console.log(i)
}
我正在寻找的是具有高效循环的 6。感谢帮助
我玩过 map 并在循环内进行过滤,但我似乎无法获得正确的语法
也许不是最有效的方法,但可以使用过滤器来完成。
首先,数组是用方括号 []
声明的,而不是花括号 {}
。所以,它将是:
let array = [0,0,0,1,1,2,3,3,5,6,6,7,20,20,20]
你要求的操作是:
array
.filter((element, index) => element >= index)
.length
filter接受的回调可以支持3个参数:
- 元素
- 指数
- 数组
可以找到文档 here。
可以反转数组或者降序排序,找到索引(加一)大于值的索引。
const
values = [0, 0, 0, 1, 1, 2, 3, 3, 5, 6, 6, 7, 20, 20, 20],
hIndex = [...values].reverse().findIndex((v, i) => v < i + 1);
console.log(hIndex);
接近而不倒退。 Kodos 到 Jonas Wilms.
const
values = [0, 0, 0, 1, 1, 2, 3, 3, 5, 6, 6, 7, 20, 20, 20],
length = values.length,
hIndex = length - values.findIndex((v, i) => v >= length - i);
console.log(hIndex);
我正在开发一个 JavaScript 函数,它可以创建 authors- H-Index。 H-Index 是一位作者在其他文章中被引用次数最多的出版物。我有
let array = [0,0,0,1,1,2,3,3,5,6,6,7,20,20,20]
这是按升序排列的被引文章数
我需要循环数组直到索引大于等于或大于索引的项目数
比如
for (let i = 1; i < array.length; i++){
count all items that are above i (0's get skipped)
if there are more than i then loop to next i if not exit with i - 1
console.log(i)
}
我正在寻找的是具有高效循环的 6。感谢帮助
我玩过 map 并在循环内进行过滤,但我似乎无法获得正确的语法
也许不是最有效的方法,但可以使用过滤器来完成。
首先,数组是用方括号 []
声明的,而不是花括号 {}
。所以,它将是:
let array = [0,0,0,1,1,2,3,3,5,6,6,7,20,20,20]
你要求的操作是:
array
.filter((element, index) => element >= index)
.length
filter接受的回调可以支持3个参数:
- 元素
- 指数
- 数组
可以找到文档 here。
可以反转数组或者降序排序,找到索引(加一)大于值的索引。
const
values = [0, 0, 0, 1, 1, 2, 3, 3, 5, 6, 6, 7, 20, 20, 20],
hIndex = [...values].reverse().findIndex((v, i) => v < i + 1);
console.log(hIndex);
接近而不倒退。 Kodos 到 Jonas Wilms.
const
values = [0, 0, 0, 1, 1, 2, 3, 3, 5, 6, 6, 7, 20, 20, 20],
length = values.length,
hIndex = length - values.findIndex((v, i) => v >= length - i);
console.log(hIndex);