在javascript数组中查找到匹配项之间的索引
我有一个数组,比如说:在javascript数组中查找到匹配项之间的索引,javascript,arrays,mapreduce,Javascript,Arrays,Mapreduce,我有一个数组,比如说: const section = [{type: TYPE_B}, {type: TYPE_A}, {type: TYPE_B}, {type: TYPE_A}, {type: TYPE_A}]; 我想得到第一个元素的索引,它的类型是,下一个元素的类型也是 这就是我所尝试的: const firstMatch = section.reduce((a, b) => { if (a.type === TYPE_A && b.type === TYP
const section = [{type: TYPE_B}, {type: TYPE_A}, {type: TYPE_B}, {type: TYPE_A}, {type: TYPE_A}];
我想得到第一个元素的索引,它的类型是,下一个元素的类型也是
这就是我所尝试的:
const firstMatch = section.reduce((a, b) => {
if (a.type === TYPE_A && b.type === TYPE_A) {
return a;
}
});
但这不起作用,因为它返回所有非匹配的未定义,并且代码在下一次迭代时崩溃。您可以使用
findIndex
const section=[{type:'type_B'},{type:'type_A'},{type:'type_B'},{type:'type_A'},{type:'type_A'}];
const toFind='TYPE_A';
设idx=section.findIndex((o,i,a)=>a[i-1]&&a[i-1]。type==toFind&&a[i+1]&&a[i+1]。type==toFind&&o.type!==toFind);
console.log(idx)
您可以使用并检查想要的类型的前置元素和实际元素
var section=[{type:'type_B'},{type:'type_A'},{type:'type_B'},{type:'type_A'},{type:'type_A'}],
类型='type_A',
index=section.findIndex((o,i,a)=>i&&a[i-1]。type==type&&o.type==type);
控制台日志(索引)代码>
const段=[{
类型:'type_B'
}, {
类型:“类型A”
}, {
类型:'type_B'
}, {
类型:“类型A”
}, {
类型:“类型A”
}];
var first=-1,second=-1;
section.forEach((typeObj,index)=>{
如果(第一个==-1){
if(typeObj.type=='type_A')first=索引;
}
else if(第一个>=0){
if(typeObj.type=='type_A')second=索引;
}
})
if(first>=0&&second>0)console.log(first+1);
else console.log(“未找到”)
const段=[
{type:“type_B”},
{type:“type_A”},
{type:“type_B”},
{type:“type_A”},
{type:“type_A”}
];
对于(变量i=0;i }
如果您真正想要的是找到两个后续TYPE_A
元素的第一个索引,那么您可以通过以下方式使用findIndex
:
section.findIndex((e, idx, arr) => e.type === TYPE_A && arr[idx+1] && arr[idx+1].type === TYPE_A)
这将返回与数组中的下一个元素相同或相等的元素列表
var TYPE_A = {"a":"a"};
var TYPE_B = {"b":"b"};
const section = [{type: TYPE_B}, {type: TYPE_A}, {type: TYPE_B}, {type: TYPE_A}, {type: TYPE_A}];
var results = [];
if (section.length > 1) {
for(var i = 0; i < section.length -1;i++){
if(section[i].type == section[i+1].type){
results.push(i);
}
}
}
console.log(results);
var TYPE_A={“A”:“A”};
var TYPE_B={“B”:“B”};
const section=[{type:type_B},{type:type_A},{type:type_B},{type:type_A},{type:type_A}];
var结果=[];
如果(截面长度>1){
对于(变量i=0;i
在编写您尝试编写的代码之前,您是否花时间了解了reduce
的实际功能?…为什么结果会是index3
?根据您的描述,它应该是index2
。我猜他想找到两个TYPE\u A
元素中的第一个索引。请添加为什么要得到4或3,或者哪一个值。想要得到什么结果?