Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 30/11/17, 19:59:52
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
Comprobar si un array contiene un elemento concreto.

Echando un vistazo en el foro oficial de Tasker, he encontrado una forma, que hasta ahora no conocía, de comprobar si un array contiene un elemento concreto, y es así;

%array(#?%elemento)

Devolverá el indice del elemento, o devolverá 0, si no se encuentra en el array.

Ej:

%array()=uno,dos,tres,cuatro,cinco.

%elemento=tres

Acción Flash: %array(#?%elemento) devolverá 3

...

Hasta ahora, yo hacía esta comprobación de la siguiente forma;

IF %array() coincide *%elemento*

Pero creo que sobretodo con arrays con muchos elementos, la primera opción debe ser más efectiva.

Última edición por Rsc Día 30/11/17 a las 20:17:44.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a Rsc su comentario:


  #2  
Viejo 30/11/17, 20:07:07
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Rsc Ver Mensaje
... si te parece bien, lo podrías añadir a: Tasker para principiantes. Lección 7. Las matrices de variables. ...
Pero si eso ya está en el tutorial...
%matriz(#?b/c)
Una lista separada por comas de los índices de matriz (de menor a mayor) con valores coincidentes con los indicados, o 0 si no coincide ninguno (2,3 en el ejemplo).
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
  #3  
Viejo 30/11/17, 20:16:34
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
Que desastre, mira que he repasado veces ese tutorial, y nunca me fijé en esa intorrogación... Y yo compartiéndolo como si hubiera descubierto América... Bueno si os vale la intención era buena

Se ve que en su día encontré la opción de IF %array() coincide *%elemento*, y pensé que era la única.

Voy a eliminar por lo menos, la sugerencia de incluirlo en el tutorial.

Última edición por Rsc Día 30/11/17 a las 20:18:56.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 30/11/17, 20:36:18
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Rsc Ver Mensaje
Que desastre, mira que he repasado veces ese tutorial, y nunca me fijé en esa intorrogación... Bueno si os vale la intención era buena.


No pasa nada. Efectivamente, la intención era buena. Y seguro que Caravantes no te lo tiene en cuenta.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
  #5  
Viejo 01/12/17, 12:37:43
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
la intención era buena. Y seguro que Caravantes no te lo tiene en cuenta
Estaba leyendo el primer post del hilo y estaba pensando:
- "Es un truco buenísimo esto que ha descubierto RSC, no me voy a limitar a pulsar el botón de "Gracias", voy a escribir un breve mensaje para agradecer de forma explícita".

Resumiendo, que yo tampoco me lo sabía a pesar de haber leído el tutorial en su momento. Lo mío es peor porque creo recordar que fui yo quien lo tradujo del inglés, pero ni con esas. Supongo que si en aquel momento no lo necesitaba o no me pareció importante, y no lo fijé adecuadamente en la memoria.

 Cita:
%matriz(#?b/c)
Una lista separada por comas de los índices de matriz (de menor a mayor) con valores coincidentes con los indicados, o 0 si no coincide ninguno (2,3 en el ejemplo).
Es que -además- está mal explicado de narices [colleja a partes iguales para el redactor original y para quien hizo una traducción literal ], no me extraña que solo lo hayáis asimilado la mitad de los más listos (estoy mirando a Willy y a RSC).

Sinceramente, creo que sería buena idea que en esa página del tutorial RSC añadiese un abajo un comentario-respuesta explicándolo bien, tal como ha hecho aquí. Luego yo pongo en ese párrafo del tutorial una nota-enlace a la explicación/comentario.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 01/12/17, 12:41:05
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Rsc Ver Mensaje
Voy a eliminar por lo menos, la sugerencia de incluirlo en el tutorial.


Ves como Caravantes no te lo tendría en cuenta. Si hasta te ha puesto una medalla.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
  #7  
Viejo 04/12/17, 15:11:40
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
no me extraña que solo lo hayáis asimilado la mitad de los más listos (estoy mirando a Willy y a RSC).
A mi no me mires, ya te digo que he repasado ese hilo 200 veces y no me había percatado. Creo que en este foro, nunca o casi nunca se ha utilizado esa forma de averiguar si un elemento está incluido o no en un array, y que casi todos lo hacíamos como he comentado antes. IF % carray() ~ *%elemento*

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Sinceramente, creo que sería buena idea que en esa página del tutorial RSC añadiese un abajo un comentario-respuesta explicándolo bien, tal como ha hecho aquí
Siento no haberlo hecho antes, hay rachas que me cuesta sacar tiempo para mis hobbys... No se si aún quieres que lo indique también en el otro hilo, o prefieres dejarlo simplemente con el enlace a este hilo, que he visto que has añadido.

Bueno y a lo que iba...

Como vengo haciendo últimamente, cuando hay más de una forma de hacer lo mismo, he calculado el tiempo que tarda en ejecutarse de ambas formas, y me he llevado una sorpresa...

TAREA 1

A1: Establecer variable [ Nombre:%timetarea A:%TIMEMS Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Si (if) [ %Habilitados() ~ *rebeca* ]
A3: Esperar [ MS:1 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A4: Fin si (End if)
A5: Establecer variable [ Nombre:%timetareaduracion A:%TIMEMS - %timetarea Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A6: Flash [ Texto:%timetareaduracion Largo:Apagado ] (Tarda entre 9 y 15 ms)

TAREA 2

A1: Establecer variable [ Nombre:%timetarea A:%TIMEMS Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A: Si (if) [ %Habilitados(#?rebeca) != 0 ]
A3: Esperar [ MS:1 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A4: Fin si (End if)
A5: Establecer variable [ Nombre:%timetareaduracion A:%TIMEMS - %timetarea Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A6: Flash [ Texto:%timetareaduracion Largo:Apagado ] (Tarda entre 40 y 60 ms)

Daba por hecho que la segunda opción, nueva para mi, iba a ser mas eficaz, pero acabo de comprobar que no...

Última edición por Rsc Día 04/12/17 a las 15:17:57.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a Rsc su comentario:
  #8  
Viejo 04/12/17, 15:39:28
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por Rsc Ver Mensaje
Daba por hecho que la segunda opción, nueva para mi, iba a ser mas eficaz, pero acabo de comprobar que no...
Hacen cosas distintas. En el primer caso no te devuelve ninguna posición, lo estás tratando como una cadena de texto (contiene Rebeca sí o no). Mientras que en segundo le estás pidiendo que te devuelva la posición dentro del array, si se encuentra en él.

No sé como irá en rendimiento pero yo alguna vez he usado el indexOf en JS para seleccionar un índice concreto manejando escenas, ya que es la forma de seleccionar en algunos elementos que usan arrays.

Última edición por danko9696 Día 04/12/17 a las 15:46:12.
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 04/12/17, 17:42:03
Array

[xs_avatar]
Rsc Rsc no está en línea
Usuario muy activo
 
Fecha de registro: jun 2011
Mensajes: 502
Modelo de smartphone: Xiaomi Mi5s
Tu operador: Otra
Tienes razón, aunque con ambas puedes comprobar si un array contiene un elemento concreto, no hacen exactamente lo mismo.

Pero me imaginaba, que al tener que recorrer todo el array para comprobar si el *%elemento* coincide,tardaría más en ejecutarse...

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
indexOf en JS para seleccionar un índice concreto manejando escenas
Con esto te refieres a que sitúas/enfocas el indice que deseas de un array, en un elemento menú?
Responder Con Cita
  #10  
Viejo 04/12/17, 21:29:23
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por Rsc Ver Mensaje
Pero me imaginaba, que al tener que recorrer todo el array para comprobar si el *%elemento* coincide,tardaría más en ejecutarse...
No si lo comparas como una cadena en lugar de como un array, solo hay una comparación (y me da que eso es lo que hace). Mientras que en el segundo caso puede haber también solo una (si resulta ser el primero) pero normalmente serán más. De hecho, si yo tuviese que hacer lo mismo en JS habría hecho exactamente eso, comparar con la cadena antes de convertirla en array (y quizás no realizar esa conversión). Creo que Tasker hace lo mismo internamente.

 Cita: Originalmente Escrito por Rsc Ver Mensaje
Con esto te refieres a que sitúas/enfocas el indice que deseas de un array, en un elemento menú?
Nope, en un spinner.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 00:06:49 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /