Cómo obtener el final de una variable de JavaScript

Esta respuesta aborda el caso más general donde pageUrl contiene varios parámetros y quizás un ancla; por ejemplo,

…? MainColour = grassgreen & bgColour = white # top

En aras de la flexibilidad, aquí hay una forma * de lidiar con tales URL. Suponiendo que tenemos una URL del formulario

pageUrl = “[dirección base]? [lista de parámetros] # [ancla]”;

podemos extraer la lista de pares de nombre / valor de parámetro de esta manera (se muestra paso a paso para mayor claridad):

var tmp1 = url.split (‘?’) [1]; // lista de parámetros + ancla
var tmp2 = tmp1.split (‘#’) [0]; // lista de parámetros
var params = tmp2.split (‘&’); // lista de parámetros (como una matriz)
var plist = params.map (function (e) {return e.split (‘=’);});

Al final de esto, plist será una matriz de matrices, así:

plist [0] = [“mainColour”, “grassgreen”];
plist [1] = [“bgColour”, “blanco”];
// etc.

* Otras respuestas también han abordado este caso más general de otras maneras. También vale la pena señalar que algunos marcos JS incluyen funciones especiales que simplifican los parámetros de análisis desde una URL.

Actualización: vea los comentarios para obtener una forma de convertir la lista de parámetros en un objeto (matriz asociativa) en lugar de en una matriz de pares de nombre / valor.

¿Cómo se obtiene el final de una variable de JavaScript?

Entonces, tengo la variable “pageUrl”, que está configurada como “website [punto] com / page? MainColour = grassgreen”. De esta variable, ¿cómo puedo obtener solo “grassgreen”? Creo que debería hacer algo con substr ()

Con NodeJs, puede usar el módulo URL para lograr esto.

La primera parte del siguiente código responde a su pregunta

const {URL, URLSearchParams} = require (‘url’);

const myURL = nueva URL (‘ https://example.org/?abc=123&#039 ;);
console.log (myURL.searchParams.get (‘abc’));
// Imprime 123

myURL.searchParams.append (‘abc’, ‘xyz’);
console.log (myURL.href);
// Imprime https://example.org/?abc=123&abc=xyz

myURL.searchParams.delete (‘abc’);
myURL.searchParams.set (‘a’, ‘b’);
console.log (myURL.href);
// Imprime https://example.org/?a=b

const newSearchParams = nueva URLSearchParams (myURL.searchParams);
// Lo anterior es equivalente a
// const newSearchParams = nueva URLSearchParams (myURL.search);

newSearchParams.append (‘a’, ‘c’);
console.log (myURL.href);
// Imprime https://example.org/?a=b
console.log (newSearchParams.toString ());
// Imprime a = b & a = c

// newSearchParams.toString () se llama implícitamente
myURL.search = newSearchParams;
console.log (myURL.href);
// Imprime https://example.org/?a=b&a=c
newSearchParams.delete (‘a’);
console.log (myURL.href);
// Imprime https://example.org/?a=b&a=c

Ejemplo tomado de Node.js v8.2.1 Documentation


Sin NodeJS.

Todavía puede usar la API anterior, pero no es necesario importar nada.

// https://some.site/?id=123
var parsedUrl = nueva URL (window.location.href);
console.log (parsedUrl.searchParams.get (“id”)); // 123

Ejemplo tomado de URL


Mi propia contribución

let url = ” https://website.com/page?mainColour=grassgreen&quot ;
let reg = / [? &] (\ w + = \ w +) / g
for (permite la búsqueda de reg.exec (url) .slice (1)) {
let [clave, valor] = search.split (‘=’);
if (clave === ‘mainColour’) {
console.log (valor);
}
}

Este no ha sido probado, pero espero que tengas la idea

pageUrl.split (‘=’) [1]

Lo que esto hace es dividir la cadena pageUrl en dos subcadenas y devolver una matriz de cadenas divididas, es decir

[“Sitio web.com/página?mainColour”> ,grassgreen”]

acceder al índice 1 le da la cadena “grassgreen”

var end = url.substr (url.lastIndexOf (“=”));

Si sabe que el signo igual siempre estará allí, puede usar lo anterior. De lo contrario, primero deberá verificar el índice -1.

Esto es de memoria, así que avíseme si tiene errores.

Por cierto, hay propiedades y funciones que ya existen que analizarán los parámetros de consulta de URL (eso es lo que llaman esos valores al final de la URL).

El siguiente código JavaScript puede ayudarlo:

/ * obtener parámetros de URL * /
función GetURLParameter (sParam, splitter) {
var sPageURL = window.location.search.substring (1);
var sURLVariables = sPageURL.split (divisor);
for (var i = 0; i var sParameterName = sURLVariables [i] .split (‘=’);
if (sParameterName [0] == sParam) {
return sParameterName [1];
}
}
}

var mc;

mc = GetURLParameter (“mainColor”, “?”); / * mc será verde * /

/ ***
Usa tu variable mc

*** /

Existe la respuesta ingenua, que es “analizar la cadena usted mismo”.

Ciertamente puedes hacer esto. Pero es un enfoque fundamentalmente inflexible y frágil. El problema general que tiene aquí es que tiene una cadena Uri y desea extraer un componente de ella. En este caso particular, el valor de la variable de cadena de consulta “mainColour”.

En el futuro, sin embargo, es posible que desee, por ejemplo, enumerar todas las variables de cadena de consulta.

Por lo tanto, es mejor resolver el problema general para que tenga algo que crecerá con usted y que no falle si la cadena cambia. Desea poder convertir la cadena a un objeto Uri, lo cual se hace fácilmente con medialize / URI.js.

Aclamaciones.

Según el escenario anterior, dividimos el método como a continuación.

valor var = pageUrl.split (“=”) [1];

Esto dividirá primero la cadena dada por el parámetro dado y devolverá una matriz. En nuestro caso, la matriz tendrá 2 valores, el primer lado izquierdo del signo igual y el segundo valor del lado derecho. Por lo tanto, utilicé el índice de matriz de 1.

Espero que lo entiendas.