Digamos que tengo dos matrices de objetos
arrayOne = [{revision: { id: 1 }}, {revision: { id: 2 }}, {revision: { id: 3 }}, {revision: { id: 4 }}] arrayTwo = [{someOtherProp: { id: 2 }}, {someOtherProp: { id: 4 }}] ¿Cómo compruebo los ids en arrayTwo contra los ids en arrayOne y devuelvo el índice de resultado de las ocurrencias de id similares como [1, 3] (basado en arrayOne podemos ver en el índice 1 y el índice 3 tienen ids que ocurren en arrayTwo )
Esto debería funcionar
arrayOne = [{revision: { id: 1 }}, {revision: { id: 2 }}, {revision: { id: 3 }}, {revision: { id: 4 }},{revision: { id: 5 }}]; arrayTwo = [{someOtherProp: { id: 2 }}, {someOtherProp: { id: 4 }}]; console.log(arrayOne.filter(o1 => arrayTwo.some(o2 => o1.revision.id === o2.someOtherProp.id)).map(x => arrayOne.findIndex(y => y.revision.id === x.revision.id))); // [1, 3]Esto debería funcionar para su caso:
one = [{revision: { id: 1 }}, {revision: { id: 2 }}, {revision: { id: 3 }}, {revision: { id: 4 }}] two = [{someOtherProp: { id: 2 }}, {someOtherProp: { id: 4 }}] for(let i in two) { for(let j in one) { if(two[i]['someOtherProp']['id']==one[j]['revision']['id']){ console.log(i,j) } } }Puedes usar este implemento:
arrayOne = [{revision: { id: 1 }}, {revision: { id: 2 }}, {revision: { id: 3 }}, {revision: { id: 4 }},{revision: { id: 5 }}]; arrayTwo = [{someOtherProp: { id: 2 }}, {someOtherProp: { id: 4 }}]; arrayTwo.map(v=>{return v['someOtherProp']['id']}).map(v=>{ return arrayOne.map(v=>{return v['revision']['id']}).indexOf(v) })