¿Cómo comprobar si una lista contiene valores de otra lista?¿Existe una línea elegante para eso en lugar de iterar a través de la segunda lista usando la función Contains()?
Automatización y scriptingRe: ¿Cómo comprobar si una lista contiene valores de otra lista?No es una frase de una sola línea, pero es más elegante que un bucle:
A = {1, 2, 3, 4, 5};
B = {3, 6, 7};
check = Associative Array(A);
check << Intersect(Associative Array(B));
N Items(check);Re: ¿Cómo comprobar si una lista contiene valores de otra lista?Puede recorrer una de las listas y usar Contains() para ver si el elemento específico de la lista se encuentra en algún lugar de la otra lista.
O bien, puede convertir ambas listas en matrices asociativas independientes y luego verificar la intersección entre las dos matrices.
Names Default To Here( 1 );
listA = {"a", "b", "c"};
listB = {"d", "c", "f"};
inBothList = {};
For Each( {member}, listA,
If( Contains( listB, member ),
Insert Into( inBothList, member )
)
);
Show( inBothList );
arrayA = Associative Array( listA );
arrayB = Associative Array( listB );
arrayA << intersect( ArrayB);
show( arrayA );Re: ¿Cómo comprobar si una lista contiene valores de otra lista?Normalmente utilizo For Each + Break o Associative Arrays, pero hay muchos métodos diferentes en los que puedes usar funciones de forma un poco "incorrecta", como Transform Each (las "funciones de una sola línea" como esta suelen ser ideas horribles (en mi opinión), ya que tienden a ser difíciles de leer).
Names Default To Here( 1 );
A = {1, 2, 3, 4, 5};
B = {3, 6, 7};
r = Eval(Transform Each({item}, A, Output("Expression", "Any"), Contains(B, item)));
También depende de lo que estés comparando: cadenas, números enteros, flotantes, listas... ya que las listas JMP básicamente pueden contener cualquier cosa.