Escriba un método para operar en las siguientes cadenas, descubra las reglas y devuelva los resultados correspondientes.

Recientemente, muchos socios pequeños que han completado la capacitación salen a buscar trabajo y les resulta difícil encontrar preguntas escritas en los exámenes. Hay una pregunta, mucha gente me pidió que la hiciera, ¿qué tipo de pregunta es? Vamos a ver

var str1 = "http://test.com?foo=active@987df&key=123&key=78";

var str2 = "http://test.com?too=last@4567&key=555&value=test";

función mostrar () {}, vamos a encapsular una función mostrar

print show(str1); //resultado devuelto {foo:'active',key:[123,78]}

Imprimir show (str2); // devuelve el resultado {también: 'último', clave: 555, valor: 'prueba'}

En primer lugar, cuando nos encontramos con este problema, debemos pensar en una serie de API de cadena de matriz, dividir la cadena en una matriz con "?", y luego mirar la siguiente parte y luego usar "&" para separar, porque los números en el resultado no pueden ser cadenas, también debemos convertir la cadena digital obtenida en un tipo de número.

En una palabra, tome la clave y el valor antes de "=" aquí como una matriz, y luego agréguelos uno por uno. Finalmente, si la longitud de la matriz es solo uno, use toString(), y si es un número, entonces Número

Aparte de todo lo demás, vamos al código.

función mostrar (cadena) {

            let s = str.split('?')[1];      //Obtener foo=active@987df&key=123&key=78

           // Separar s con &

            let arr = s.split("&");        // obtener la matriz ['foo=active@987df', 'key=123', 'key=78']

            // Declarar un objeto vacío para contener pares clave-valor

            sea ​​obj = {};

            // Recorra arr, coloque cada elemento antes de '=' en el objeto como clave y luego colóquelo en la matriz

            for (sea j = 0; j < arr.longitud; j++) {

                let char = arr[j].split("=")[0];

                let charV = arr[j].split("=")[1];

                if (obj[char] == indefinido) {

                    // ensamblar con numeros

                    obj[carácter] = [];

                     //Juzgar si hay @ Este es el método de sellado inferior, usando el operador ternario

                    obj[char].push(juez(charV) ? charV.split("@")[0] : charV)

                } demás {

                    obj[char].push(charV)

                }

            }

            // Recorrer el objeto, si la longitud del valor es uno, convertirlo en una cadena en lugar de una matriz

            para (deja k en obj) {

                if (objeto[k].longitud == 1) {

                   //Determinar si la conversión a un número no es NaN

                    //similar a [555]

                    if (!isNaN(Número(obj[k][0]))) {

                        obj[k] = Número(obj[k].toString())

                    } demás {

                        obj[k] = obj[k].toString()

                    }

                } demás {

                    for (sea j en obj[k]) {

                        if (!isNaN(Número(obj[k][j]))) {

                            obj[k][j] = Número(obj[k][j])

                        }

                    }

                }

            }

            devolver objeto

        }

        //Método de encapsulación para determinar si la cadena tiene @

        función juez(str) {

           // Devuelve si hay un nuevo método de cadena @ES6 que incluye medios para incluir, agregar s puede entenderse como la tercera persona del singular

            return str.includes("@");

        }

        consola.log(mostrar(str1));

        consola.log(mostrar(str2));

Supongo que te gusta

Origin blog.csdn.net/weixin_68067009/article/details/124787840
Recomendado
Clasificación