rebanada no funciona como se espera en mi matriz -- javascript campo con arrays campo con slice camp Relacionados El problema

slice not working as expected on my array


1
vote

problema

Español

Tengo una matriz raspada de una página web:

  myvar = document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr')   

que en la consola devuelve una matriz: ingrese la descripción de la imagen aquí

Lo que necesito hacer es subconductar esta matriz:

  1. comienza desde el 3er artículo
  2. luego mantén cada número impar de artículos

Entonces necesito un subconjunto de mi var con los artículos 3 y 5 en él.

Lo intenté: myvar.slice(3,5) . Este error devuelto "no definido no es una función"

Había tenido éxito, tendría una matriz con 3 artículos. Luego necesitaría subconizar al mantener artículos extraños en la matriz.

¿Cómo substimo a Myvar para que tenga una variable con los artículos 3 y 5 que quedan en ella? Si Myvar era longitud 10. ¿Cómo lo subastaría para incluir los artículos 3, 5, 7, 9?

Original en ingles

I have an array scraped from a webpage:

myvar = document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr') 

Which in the console returns an array: enter image description here

What I need to do is subset this array:

  1. Start from the 3rd item
  2. Then keep every odd number of items

So I need a subset of my var with items 3 and 5 in it.

I tried: myvar.slice(3,5). This returned error "Undefined is not a function"

Had I been successful I would have an array with 3 items. I'd then need to subset on keeping odd items in the array.

How do I subset for myvar so that I have a variable with items 3 and 5 left in it? If myvar was length 10. How would I subset it to include items 3, 5, 7, 9?

        

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 
  myvar = document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr')   

Myvar es un nodelista y no es una matriz. Así que no puede usar las funciones de matriz allí.

Pero puede usar apply o call para obtener la funcionalidad de la matriz en la nodelista.

¿Cómo obtener esas funciones?

  Array.prototype.slice.call(myvar, 3,5);   

Ahora puede usar slice en el Nodelist.

Pero para su pregunta real, para obtener solo los criterios particulares de coincidencia de subsetales no es posible a través de la rebanada también.

Debe iterar a través de los elementos y hacerlo manualmente.

 
myvar = document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr') 

myvar is a nodeList and it's not an array. So you can't use array functions in there.

But you can use apply or call to get the array functionality on nodelist.

How to get those functionality?

Array.prototype.slice.call(myvar, 3,5); 

Now you can use slice in the nodelist.

But for your actual question, to get only subset matching particular criteria is not possible via slice as well.

You must iterate through the elements and do it manually.

 
 
 
 
2
 
vote

Lo intenté: MyVar.Slice (3,5). Este error devuelto "no definido no es una función"

Sí, porque querySelectorAll devuelve una lista de nodos y no una matriz. Consulte también ¡la forma más rápida de convertir a JavaScript Nodelist a la matriz? .

¿Cómo substimo a Myvar para que tenga una variable con los artículos 3 y 5 que quedan en ella? Si Myvar era longitud 10. ¿Cómo lo subastaría para incluir los artículos 3, 5, 7, 9?

Deberías hacerlo manualmente de todos modos, no existe tal método en JavaScript para cortar subsecuencias con pasos. Usar

  index < arraysize 0  

(o, si quieres ser elegante)

  index < arraysize 111  
 

I tried: myvar.slice(3,5). This returned error "Undefined is not a function"

Yes, because querySelectorAll returns a node list and not an array. See also Fastest way to convert JavaScript NodeList to Array?.

How do I subset for myvar so that I have a variable with items 3 and 5 left in it? If myvar was length 10. How would I subset it to include items 3, 5, 7, 9?

You'd need to do that manually anyway, there is no such method in javascript for slicing subsequences with steps. Use

var arr = [],     myvar = document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr'); for (var i=3; i<myvar.length; i+=2)     arr.push(myvar[i]); 

(or, if you want to be fancy)

var arr = Array.prototype.filter.call(document.querySelectorAll('#tblItineraryModuleStayDetail > tbody > tr'), function(_, i) {     return i%2==1 && i>2; }); 
 
 
 
 

Relacionados problema

11  ¿Qué herramientas hay para cortar un PSD? [cerrado]  ( What tools are there to slice a psd ) 
cerrado. Esta pregunta no cumple con pautas de desbordamiento de pila . Actualmente no está aceptando respuestas. ...

1  Safari desordena el diseño al hacer zoom  ( Safari messes the design when zooming in out ) 
He cortado un diseño (consulte el primer PSD aquí < / a>) para mi práctica, y funciona bien. Pero cuando zozo en Safari, todo el diseño se ensucia. Tengo tam...

5  Rubí en los rieles corriendo en una rebanada de VPS  ( Ruby on rails running on a vps slice ) 
¿Cuáles son los principales gotchas y trucos al correr rieles en una pequeña rebanada (256MB)? ¿Cuál es la mejor configuración del servidor para cuartos estre...

1  Problema utilizando Python para cortar listas para asignar datos  ( Problem using python to slice lists to map data ) 
Uno de mis nuevos deberes requiere que me traduce o mapee los datos de un formato a otro, generalmente de Xcel, CSV o MS MDB en XML, SQL o por una especificac...

2  Arreglo adormecedor de rebanamiento vs  ( Numpy array slicing vs for loop results ) 
Considerar una esfera, compuesta de conchas de diversidad variable. Tengo dos matrices, una para el radio exterior de cada carcasa ( rad[] ) y una para la de...

20  Usando ImageMagick ¿Cómo puedo cortar una imagen en varias imágenes separadas?  ( Using imagemagick how can i slice up an image into several separate images ) 
Por favor, considere el siguiente ejemplo: La imagen de origen consta de 6 áreas que deben cortarse en 6 imágenes separadas. ¿Cómo puedo obtener la sal...

3628  Entendiendo la notación de la rebanada  ( Understanding slice notation ) 
Necesito una buena explicación (las referencias son una ventaja) en la notación de la rebanada de Python. Para mí, esta notación necesita un poco de recogid...

38  Entendiendo la reversión de la cadena a través de la rebanada  ( Understanding string reversal via slicing ) 
Estaba buscando una forma de imprimir una cadena hacia atrás, y después de una búsqueda rápida en Google, encontré este método: Supongamos $stderr5 es una...

0  Rebanado pitónico de atributos anidados  ( Pythonic slicing of nested attributes ) 
Estoy tratando con clases cuyos atributos a veces son en la lista cuyos elementos pueden ser diccionarios o objetos anidados con atributos, etc. Me gustaría r...

1  Uso de IndexSlice para filtrar los cuadros de datos de Multiindex con Pandas  ( Using indexslice to filter multiindex dataframes with pandas ) 
Pregunta: ¿Cómo filtrar las filas de manera que devuelvo solo las filas donde la inyección no es igual a 0 o NAN y no pierde los valores de las otras column...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos