JavaScript,在数组B中查找数组A中顺序相同的n+元素的最快方法是什么

JavaScript,在数组B中查找数组A中顺序相同的n+元素的最快方法是什么,javascript,arrays,performance,compare,comparison,Javascript,Arrays,Performance,Compare,Comparison,两个数组,每个数组包含10个元素: A=[{A:1},{A:2},{A:3},{A:4},{A:5},{A:6},{A:7},{A:8},{A:9},{A:10}] B=[{a:11},{a:221},{a:4},{a:5},{a:6},{a:7},{a:8},{a:10},{a:9},{a:33}] 找到数组B中顺序相同的5+元素的最有效方法是什么 预期结果: {a:4,match:true},{a:5,match:true},{a:6,match:true},{a:7,match:true}

两个数组,每个数组包含10个元素:

A=[{A:1},{A:2},{A:3},{A:4},{A:5},{A:6},{A:7},{A:8},{A:9},{A:10}] B=[{a:11},{a:221},{a:4},{a:5},{a:6},{a:7},{a:8},{a:10},{a:9},{a:33}]

找到数组B中顺序相同的5+元素的最有效方法是什么

预期结果:
{a:4,match:true},{a:5,match:true},{a:6,match:true},{a:7,match:true},{a:8,match:true}

这种方法为属性a查找相同的值,并假设相同的有序对象只存在一个子集

您可以使用两个循环,一个用于存储所有索引,另一个用于获取索引并使用存储的索引检查它的筛选函数

常数 a=[{a:1},{a:2},{a:3},{a:4},{a:5},{a:6},{a:7},{a:8},{a:9},{a:10}], b=[{a:11}、{a:221}、{a:4}、{a:5}、{a:6}、{a:7}、{a:8}、{a:10}、{a:9}、{a:33}], 结果=b.过滤器 索引,i,last=>{a},j,{[j-1]:{a:last}={}>{ 如果索引中的!i&&a返回i=索引[a]+1; 如果索引[a]==i&&index[last]+1==i返回i++; } Object.fromEntriesa.map{a},i=>[a,i],0 ; console.logresult;
.作为控制台包装{max height:100%!important;top:0;}以防有人需要它,这就是我提供的。这并不完美——在某些情况下,当少于5个元素匹配并且它们被放置在表的末尾时,结果会返回它们。但在这种情况下,可以在算法之外忽略结果

常数a=[{a:1},{a:2},{a:3},{a:4},{a:5},{a:6},{a:7},{a:8},{a:9},{a:10}] 常数b=[{a:11},{a:221},{a:4},{a:5},{a:6},{a:7},{a:8},{a:10},{a:9},{a:33}] 设j=0; 让第一个索引; 让minMatch=5 whilej a.indexOfb[j].a; iffirstIndex>-1{ j++ }否则{ b、 转移; } }否则{ 如果b[j].a==a[j+firstIndex].a{ j++; }否则{ 如果j0时{ b、 转移; j-; } firstIndex=a.map{a}=>a.indexOfb[j].a; 如果firstIndex>-1{ j++ } }否则{ 而b.length>j{ b、 流行音乐; } 打破 } } } } console.logb;
你的方式是什么?只是让你知道A[3]==B[2]//false@evolutionxbox它们是不相等的,但我不确定你的观点是什么…所以你在比较值时会意识到。这是一个有效点,它们需要连续吗?也就是说,在上面的数组中,算法会找到5个或6个匹配的元素吗?您的解决方案返回6个元素,最后一个元素{a:10}不匹配。算法只应返回五个元素:这很好!如何标记返回的元素,即match:true?在过滤之后,是否允许更新?哪一个数组?可以,但我想知道是否有一种方法可以在不进行额外迭代的情况下标记结果中的元素,这样性能就不会降低。如果两个数组的第一个元素都匹配,该算法将失败:a[0]=1,b[0]=1-结果只包含第一个元素。如何对此进行改进,使算法返回问题中描述的预期结果?