Javascript 获取数组中类型的第n项的索引

Javascript 获取数组中类型的第n项的索引,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个数组,看起来像这样: let items = [ 1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45 ] 我想得到第n个-,然后返回后面的所有内容。所以我尝试了这个,一开始我认为它是有效的,但是当我看它的时候,我发现它得到了索引,然后从数组中的索引中提取,而不是破折号的索引 因此,例如,如果n等于4,则当前得到的是第四个索引,而不是索引10处的第四个破折号 let项目=[ 1, '-', 23

我有一个数组,看起来像这样:

let items = [
  1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
我想得到第n个
-
,然后返回后面的所有内容。所以我尝试了这个,一开始我认为它是有效的,但是当我看它的时候,我发现它得到了索引,然后从数组中的索引中提取,而不是破折号的索引

因此,例如,如果
n
等于4,则当前得到的是第四个索引,而不是索引10处的第四个破折号

let项目=[
1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
//获取破折号的数量
let stops=items.filter(i=>i='-').length
//选择一个随机破折号
设n=Math.floor(Math.random()*停止)
//在随机位置找到破折号,然后获得非破折号的项目列表
让sel=items.slice(n+1).filter(r=>r!='-'))
//为最终输出选择前3项
让final=sel.slice(0,3)
console.log(n)

console.log(最终版)
尝试此解决方案。代码中的注释描述了

let项目=[
1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
让停止=[];
//根据'items'将破折号索引推送到'stops'中。
items.forEach((item,index)=>item=='-'?停止。推送(index):false);//false仅对一个线体执行
控制台日志(停止);
//选择一个随机破折号
设n=Math.floor(Math.random()*stops.length);
控制台日志(n);
//在随机位置找到破折号,使用该位置从“stops”数组中获取,并根据“items”使用该值,然后获取非破折号的项目列表
让sel=items.slice(停止[n]+1).过滤器(r=>r!='-');
//为最终输出选择前3项
设final=sel.slice(0,3);
控制台日志(最终)
let项目=[
1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
函数getNth(值){
var计数=0;
var-myIndex;
items.forEach((项目,索引)=>{
如果(项目==“-”){
计数++;
如果(计数==值){
myIndex=指数;
}
}
})
返回items.slice(myIndex);
}
控制台日志(getNth(2))

log(getNth(3))
您可以使用
findIndex()
slice()
进行此操作

let项目=[
1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
函数getNth(数据,n){
设c=0;
设i=data.findIndex(e=>e='-'&&&++c==n?true:false);
返回i!=-1?数据切片(i+1):未定义;
}
log(JSON.stringify(getNth(items,2)))
log(JSON.stringify(getNth(items,1)))
log(JSON.stringify(getNth(items,4)))
console.log(JSON.stringify(getNth(items,100))
如果计数器为零,您可以使用想要的数字进行递减,并返回
true

const
项目=[1,231,6,67,13,177,451,43,345,56,45],
getNth=n=>items.slice(items.findIndex(v=>v=='-'&&&!--n)+1);
console.log(getNth(1));
console.log(getNth(2));
console.log(getNth(3));
console.log(getNth(4));
console.log(getNth(5))
.as控制台包装{最大高度:100%!重要;顶部:0;}
let项目=[
1, '-', 231, '-', 6, 67, '-', 13, 177, 451, '-', 43, '-', 345, 56, 45
]
设n=3//n项
让计数=0
let索引
对于(i=0;i