Objetos integrados de JavaScript: matriz de matriz (4) - generador de secuencia

        El generador de secuencia genera una secuencia con un valor inicial y un valor final específicos, y genera una matriz de secuencia basada en la longitud del intervalo especificada.

        Para completar esta función, debe utilizar el objeto from () del objeto incorporado Array, así como conocimientos relacionados con matrices. Hay casos relevantes para demostración en los artículos anteriores.

Dirección 1: Objeto integrado de JavaScript - Matriz de matriz (2) - Method_Awakening Master's Blog-CSDN Blog

Dirección 2: Objeto integrado de JavaScript - Matriz de matriz (3) - Blog de maestría personalizado ArrayList_Awakening-Blog CSDN

1. Matriz de clases

        Un objeto similar a una matriz se refiere a un objeto que puede acceder a elementos a través de propiedades de índice y tiene una propiedad de longitud.

        La diferencia entre los objetos tipo matriz y las matrices es que los objetos tipo matriz no pueden llamar directamente a métodos de matriz y deben llamarse indirectamente a través de Function.call y Function.apply.

        Los objetos tipo matriz comienzan desde cero, utilizan números enteros crecientes como claves y definen un objeto cuya longitud representa el número de elementos, lo que se denomina objeto tipo matriz.

        Es posible que muchas personas no estén familiarizadas con las matrices de clases y el método Array.from(). Espero que a través de este caso todos comprendan sus funciones y conveniencias.

Ejemplo:

const objArr = { 
    0: "How", 
    1: "are", 
    2: "you", 
    length: 3 
}

2. método desde ()

        El método Array.from() crea una nueva matriz a partir de un objeto iterable o similar a una matriz y la devuelve. Los detalles del método from() se pueden encontrar en "Dirección 1". Aquí sabemos que puede convertir una matriz de clase en una nueva instancia de matriz, el ejemplo es el siguiente:

const objArr = { 0: "How", 1: "are", 2: "you", length: 3 }

console.log(Array.from(objArr));

El resultado es el siguiente:

[ 'Cómo estás' ]

3. Implementación del generador de secuencias.

3.1 Generar una matriz de longitud especificada

        Al crear una matriz de clase y especificar su longitud, conviértala en una matriz vacía de la longitud especificada mediante el método Array.from() y luego implemente la función de incremento de elementos a través de un bucle.

Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) => {
    // 生成一个指定长度的空数组
    let arr = Array.from({ length: (end - start) / step + 1 });
    console.log(arr);
}

// 生成0~9元素的数组,每递增为1
generatorSequence(0, 9, 1);

Resultado de salida:

[
  indefinido, indefinido,
  indefinido, indefinido,
  indefinido, indefinido,
  indefinido, indefinido,
  indefinido, indefinido
]

3.2 Implementar funciones incrementales

        Si se especifica el segundo parámetro del método Array.from(), la función de devolución de llamada se ejecutará para cada elemento de la nueva matriz. Por lo tanto, puede utilizar esta función para incrementar todos los bucles no definidos en la matriz vacía para secuenciar valores.

Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) => {
    // 生成一个指定长度的空数组
    // (_, i) 因为空数组,所以第一个参数 “_” 返回结果为undefined,第二个参数“i”为索引值
    let arr = Array.from({ length: (end - start) / step + 1 }, (_, i) => start + (i * step));
    console.log(arr);
}

// 生成0~9元素的数组,每递增为1
generatorSequence(0, 9, 1);

Resultado de salida:

[
  0, 1, 2, 3, 4,
  5, 6, 7, 8, 9
]

        En este punto se ha implementado el generador de secuencia, esta función no es complicada, optimicémosla, el código es el siguiente:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );

// 生成0~9元素的数组,每递增为1
const arr = generatorSequence(0, 5, 1);
// 输出结果
console.log(arr);

Resultado de salida:

[ 0, 1, 2, 3, 4, 5 ]

3.3 Generar números pares

 Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );

// 生成偶数
const arr = generatorSequence(0, 10, 2);
// 输出结果
console.log(arr);

Resultado de salida:

[ 0, 2, 4, 6, 8, 10 ]

3.4 Año de creación

Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );

// 生成0~9元素的数组,每递增为1
const arr = generatorSequence(2010, 2023, 1);
// 输出结果
console.log(arr);

Resultado de salida:

[
  2010, 2011, 2012
  , 2013, 2014,
  2015, 2016, 2017, 2018,
  2019, 2020, 2021,
  2022, 2023
]

3.5 Convertir año en objeto

Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );

// 生成0~9元素的数组,每递增为1
const arr = generatorSequence(2010, 2023, 1).map(item => {
    return {
        label: item,
        value: item
    }
});
// 输出结果
console.log(arr);

Resultado de salida:

[
  { etiqueta: 2010, valor: 2010 },
  { etiqueta:
  2011, valor: 2011 }, { etiqueta: 2012, valor: 2012 },
  { etiqueta: 2013, valor: 2013 },
  { etiqueta: 2014, valor: 2014 } ,
  { etiqueta: 2015, valor: 2015 },
  { etiqueta: 2016, valor: 2016 },
  { etiqueta: 2017, valor: 2017 },
  { etiqueta: 2018, valor: 2018 },
  { etiqueta: 2019, valor: 2019 } ,
  { etiqueta: 2020, valor: 2020 },
  { etiqueta: 2021, valor: 2021 },
  { etiqueta: 2022, valor: 2022 },
  { etiqueta: 2023, valor: 2023 }
]

3.6 Generar letras A~Z

        Aquí se utilizará el método charCodeAt(), que es un método de cadena utilizado para recuperar el valor Unicode de un carácter específico. Al generar códigos Unicode entre la A y la Z, debe utilizar el método fromCharCode(), que también es un método de cadena y se utiliza para convertir códigos Unicode en caracteres.

Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );
// 生成A~Z之间字符
const arr = generatorSequence('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1);
// 输出结果
console.log(arr);

Resultado de salida:

[
  65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85
  , 86
  , 87, 88,
  89 , 90
]

        Los anteriores son todos códigos Unicode, por lo que después de generar la matriz de secuencia, puede usar el método Array.map () para convertir todos los valores en caracteres. El código es el siguiente:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );
// 生成A~Z之间字符
const arr = generatorSequence('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1)
            .map(item => String.fromCharCode(item));
// 输出结果
console.log(arr);

Resultado de salida:

[
  'A', 'B', 'C', 'D', 'E', 'F', 'G', '
  H', 'I', 'J', 'K', 'L',
  ' M', 'N', 'O', 'P', 'Q', 'R', 'S', '
  T', 'U', 'V', 'W', 'X',
  'Y' , 'Z'
]

3.7 generación de caracteres chinos

        Dado que se pueden generar letras, también se pueden generar caracteres chinos. Sin embargo, Unicode no admite muy bien los caracteres chinos. Hay un total de 60.000 a 70.000 caracteres chinos en chino simplificado y tradicional, y UCS-2 puede representar hasta 65.536, por lo que Unicode solo puede excluir algunos caracteres chinos que se utilizan raramente.

        Ejemplo:

/**
 * 序列生成器
 */
const generatorSequence = (start, end, step) =>  
                        Array.from(
                            { length: (end - start) / step + 1 }, 
                            (_, i) => start + (i * step)
                        );
// 生成汉字
const arr = generatorSequence('一'.charCodeAt(0), '二'.charCodeAt(0), 1)
            .map(item => String.fromCharCode(item));
// 输出结果
console.log(arr);

Resultado de salida:

[
  '一', '丁', '丂', '七', '丄', '丅', '丆', '万', '张', '三', '上', '下',
  '丏', '不', '和', '丏', 'mendigo', 'feo', '丒', 'Zhuan', 'Qi', 'Pi', '世', '丗', 'Qiu
  ' , 'bing', 'ye', 'cong', 'dong', 'si', 'cheng', 'die', '丠', '両', 'die', '丣', 'dos',
  ' Yan', 'bin', 'sang', '丨', '丩', 'ge', '丫', '丬', '中', '丮', '丯', 'Feng', '丱
  ' , 'chuan', '丳', 'lin', '丵', '丶', '丷', 'Wan', 'Dan', 'Wei', 'Zhu',
  '丼', '丽', 'Ju', '丿', '乀', '乁', '乂', 'Nai', '乄', 'Jiu', '乆', '乇', '灹
  ' ', 'Yi', '乊', 'Zhi', 'Wu', 'Zha', 'Hu', 'Wu', 'Le', '乑', 'Ping', 'Pong', 'Qiao'
  , '乕', 'guai', '成', '成', 'yi', '乚', '乛', '乜', '九', 'rogar', 'ye', 'xi', ' xiang
  '', '乢', '乣',
  ... 41 artículos más
]'Wu', 'Zha', 'Hu', 'Wu', 'Le', '乑', 'Ping', 'Pong ', 'Qiao', '乕', 'Guai', '成', '成', 'yi', '乚', '乛', '乜', '九', 'rogar', 'ye', 'xi', 'xiang', '乢', '乣', ... 41 más artículos ]'Wu', 'Zha', 'Hu', 'Wu', 'Le', '乑', 'Ping', 'Pong ', 'Qiao', '乕', 'Guai', '成', '成', 'yi', '乚', '乛', '乜', '九', 'rogar', 'ye', 'xi', 'xiang', '乢', '乣', ... 41 más artículos ]

        Las funciones relacionadas del generador de secuencia se presentarán aquí por el momento, espero que sea de utilidad para todos.

Supongo que te gusta

Origin blog.csdn.net/jiciqiang/article/details/133500544
Recomendado
Clasificación