Ejemplos de operaciones de matriz de JavaScript y habilidades de manipulación de objetos

Tabla de contenido

manipulacion de arreglos javascript

en bucle

para en bucle

en bucle

forEach bucle

recorrido del mapa

operación de filtro

operación de concatenación

clasificarclasificar

algunas otras operaciones

manipulación de objetos

Enumeración de Java (enum)

ejemplo

Usando enumeraciones en clases internas

ejemplo

iterar sobre elementos de enumeración

ejemplo

Use la clase de enumeración en el interruptor

ejemplo

métodos value(), ordinal() y valueOf()

ejemplo

miembros de la clase de enumeración

ejemplo

Resumir


manipulacion de arreglos javascript

Hoy, javascriptexplicaré algunas operaciones comunes de matrices, con la esperanza de ser útiles para los desarrolladores. Veamos los tres bucles comunes a continuación.

en bucle

var arr =[1, 3, 8, 4]
for (var i = 0,j = arr.length; i < j; i++) {
    console.log(arr[i], i)
}
// Prints:
// [0] is 1 0
// [1] is 3 1
// [2] is 8 2
// [3] is 4 3
para en bucle

var arr =[1, 3, 8, 4]
var map ={a: 1,b: 2,c: 3}
Array.prototype.text =5
for (var i in arr) {
    console.log(arr[i], i)
}

for (var i in map) {
   console.log(map[i], i)
}
// Prints arr:
// [0] is 1 "0"
// [1] is 3 "1"
// [2] is 8 "2"
// [3] is 4 "3"
// [4] is 5 "text"

//prints map:
// [0] is 1 "a"
// [1] is 2 "b"
// [2] is 3 "c"

en bucle

var arr =[1, 3, 8, 4]
for (var i of arr) {
    console.log(i)
}
// Prints:
// [0] is 1
// [1] is 2
// [2] is 3
// [3] is 8
// [4] is 4

Se puede ver que forel ciclo y for ofel ciclo atraviesan la matriz en sí, pero la diferencia es el valor de i, el primero es el índice y el último es el valor de la matriz. for inEl bucle no solo atraviesa la matriz en sí, sino que también atraviesa el prototipo y puede atravesar objetos al mismo tiempo. Tenga en cuenta aquí que el valor de i es stringdel tipo "0,1,2,3" Resumen: forel ciclo puede satisfacer la mayoría de nuestras situaciones, pero es la más problemática, obtener el índice, es mejor obtener for ofla matriz directamente como ese valor. for inLa función de bucle es la más fuerte y puede atravesar objetos, pero el inconveniente es atravesar el objeto prototipo, lo que a veces puede afectar nuestro recorrido. Los 3 bucles anteriores pueden breaksalir del bucle.

forEach bucle

var arr =[1, 3, 8, 4]
arr.forEach((row, index, test) = >{
    console.log(row, index, test)
})
// Prints:
// [0] is 1 0 arr
// [1] is 2 1 arr
// [2] is 3 2 arr
// [3] is 8 3 arr
// [4] is 4 4 arr

Se puede ver que forEachel ciclo y for inel ciclo son muy similares, la diferencia es forEachque el recorrido tiene la forma de una función de devolución de llamada, y los parámetros son el valor de la matriz, el índice y la matriz en sí row. se puede procesar y la propia matriz se cambiará. forEachNo es tan amigable con la necesidad de interrumpir el recorrido, y breakel bucle no se puede terminar pasando. En la mayoría de los casos forEach, es fácil satisfacer nuestro recorrido, pero forEachel ciclo tiene el problema de las variables de contexto (si no se puede usar la función de flecha, se usa la función de flecha para evitar este problema).

recorrido del mapa

var arr =[1, 3, 8, 4]
var newArr = arr.map((row, index, test) = >{
    return row
})
arr.push(5)
console.log(arr, newArr)
// Prints:
//[1,3,8,4,5],[1,3,8,4]

mapEl recorrido forEaches lo mismo que el parámetro de recorrido. La función de devolución de llamada también se usa para recorrer toda la matriz. La diferencia es que mapel recorrido returnnos devuelve una nueva matriz.

operación de filtro

var arr =[1, 3, 8, 4]
var newArr = arr.filter((row, index, test) = >{
    return row >= 5
})
console.log(newArr)
// Prints:
//[8]

filterLa operación se usa para filtrar la matriz, encontrar el valor que cumple la condición y devolver una nueva matriz, los parámetros de la función de devolución de llamada son los mismos y forEachvolver true falsepara determinar si se cumple la condición de la nueva matriz.

operación de concatenación

var arr =[1, 3, 8, 4]
var arr2 =[4, 5]
var newArr = arr.concat(arr2)
var newArr1 = arr.concat()
console.log(newArr, arr2)
// Prints:
//[1, 3, 8, 4, 4, 5]
//[1, 3, 8, 4]

concatLas operaciones se utilizan para combinar matrices y devolver una nueva matriz. Aquí hay una operación show que arr.concat()puede copiar fácilmente una matriz con solo una línea de código.

clasificarclasificar

var arr =[1, 3, 8, 4]
arr.sort((a, b) = >a > b)
console.log(arr)
// Prints:
// [1, 3, 4, 8]

sort ordena la matriz y acepta una función de devolución de llamada. El parámetro de la función es 2 elementos consecutivos en la matriz. El código anterior implementa de manera similar una ordenación de burbujas y regresa true falsepara

algunas otras operaciones

//shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
//unshift:将参数添加到原数组开头,并返回数组的长度
//pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
//push:将参数添加到原数组末尾,并返回数组的长度
//reverse:将数组反序
//splice(start,deleteCount,val1,val2,...):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...
//slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组
//join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符
//some(),every()判断数组中是否存在满足条件的值,前者有一个为true则返回true,后者所有未true才返回true,有点像&&和||。

//这里写一个数组比较的问题
[]==[]
//prints:false
var a1 =[1, 2, 3]
var a2 =[1, 2, 3]
a1.toString() == a2.toString()
//prints:true
//上面的方式巧妙的避开了大量代码来判断数组是否相同
manipulación de objetos

var map1 ={name: 'jack',age: 21,sex: '0'}
var map2 ={phone: '123456'}
var map3 =Object.assign(map1, map2)
var arr =Object.keys(map1)
console.log(arr)
console.log(map3)
//prints:
//["name", "age", "sex"]
//{name: "jack", age: 21, sex: "0", phone: "123456"}

Puede ver que Object.keysel método puede keyformar una matriz de objetos, y cuando obtenemos la matriz, podemos usar forEachotros métodos para atravesar el objeto. Object.assignLas propiedades de n objetos se pueden fusionar, y las últimas propiedades sobrescribirán las propiedades anteriores, y finalmente se obtendrá un nuevo objeto. Estos dos métodos es6 son muy prácticos.

Enumeración de Java (enum)

Una enumeración de Java es una clase especial que generalmente representa un conjunto de constantes, como 4 estaciones en un año, 12 meses en un año, 7 días en una semana y direcciones como este, oeste, norte, etc.

Una clase de enumeración de Java se define mediante la palabra clave enum, y cada constante está separada por una coma, .

Por ejemplo, defina una clase de enumeración de color.

enum Color 
{ 
    RED, GREEN, BLUE; 
} 

Las constantes de color de la clase Color enumerada anteriormente incluyen ROJO, VERDE, AZUL, que representan rojo, verde y azul respectivamente.

Ejemplo de uso:

ejemplo

enum Color
{ ROJO, VERDE, AZUL; }

public class Test
{ // Salida de ejecución public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }






El resultado de ejecutar el código anterior es:

RED

Usando enumeraciones en clases internas

Las clases de enumeración también se pueden declarar en clases internas:

ejemplo

prueba de clase pública
{ enum Color { ROJO, VERDE, AZUL; }



// Salida de ejecución
public static void main(String[] args)
{ Color c1 = Color.RED; System.out.println(c1); } }



El resultado de ejecutar el código anterior es:

RED

Cada enumeración se implementa internamente a través de Class, y todos los valores de enumeración son finales estáticos públicos.

La conversión de color de la clase de enumeración anterior se implementa en la clase interna:

class Color
{
     public static final Color RED = new Color();
     public static final Color BLUE = new Color();
     public static final Color GREEN = new Color();
}

iterar sobre elementos de enumeración

Los elementos de una enumeración se pueden iterar usando la instrucción for:

ejemplo

enum Color
{ ROJO, VERDE, AZUL; } public class MyClass { public static void main(String[] args) { for (Color myVar : Color.values()) { System.out.println(myVar); } } }








El resultado de ejecutar el código anterior es:

RED
GREEN
BLUE

Use la clase de enumeración en el interruptor

Las clases de enumeración se utilizan a menudo en declaraciones de cambio:

ejemplo

enum Color
{ ROJO, VERDE, AZUL; } public class MyClass { public static void main(String[] args) { Color myVar = Color.BLUE;




switch(myVar) { case RED: System.out.println("Red"); break; case GREEN: System.out.println("Green"); break; case BLUE: System.out.println("Blue" ) ; romper; } } }











El resultado de ejecutar el código anterior es:

蓝色

métodos value(), ordinal() y valueOf()

La clase de enumeración definida por enum hereda la clase java.lang.Enum de forma predeterminada e implementa las interfaces java.lang.Serializable y java.lang.Comparable.

Los métodos values(), ordinal() y valueOf() se encuentran en la clase java.lang.Enum:

  • valores () devuelve todos los valores en la clase de enumeración.
  • El método ordinal() encuentra el índice de cada constante de enumeración, como un índice de matriz.
  • El método valueOf() devuelve la constante de enumeración para el valor de cadena especificado.

ejemplo

enum Color
{ ROJO, VERDE, AZUL; }

public class Test
{ public static void main(String[] args) { // 调用 valores() Color[] arr = Color.values();



// iterar la enumeración
para (Color col : arr)
{ // ver el índice System.out.println(col + "at index" + col.ordinal()); }


// Use valueOf() para devolver la constante de enumeración, si no existe, se informará una IllegalArgumentException
System.out.println(Color.valueOf("RED"));
// System.out.println(Color.valueOf ("BLANCO"));
}
}

El resultado de ejecutar el código anterior es:

RED at index 0
GREEN at index 1
BLUE at index 2
RED

miembros de la clase de enumeración

Las enumeraciones pueden usar sus propias variables, métodos y constructores al igual que las clases ordinarias. Los constructores solo pueden usar modificadores de acceso privados, por lo que no se pueden llamar externamente.

Las enumeraciones pueden contener métodos tanto concretos como abstractos. Si una clase de enumeración tiene un método abstracto, cada instancia de la clase de enumeración debe implementarlo.

ejemplo

enum Color
{ ROJO, VERDE, AZUL;

// Constructor
private Color()
{ System.out.println("Constructor llamado para: " + this.toString()); }

public void colorInfo()
{ System.out.println("Universal Color"); } }


public class Test
{ // 输出public static void main(String[] args) { Color c1 = Color.RED; Sistema.fuera.println(c1); c1.colorInfo(); } }







El resultado de ejecutar el código anterior es:


Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color

Resumir

Las matrices son un tipo de matriz común en javascript, y hay muchas operaciones. Elegir un método apropiado puede mejorar el rendimiento del programa y la legibilidad del código. Algunas funciones solo están disponibles en es6 y no se explicarán aquí, y no se comparará el rendimiento de la operación específica.


 

Supongo que te gusta

Origin blog.csdn.net/qq_48652579/article/details/131407430
Recomendado
Clasificación