Me pregunto si hay una forma de obtener un determinado elemento de una matriz, que se almacena en un solo valor. Suena raro, lo sé, pero este es mi problema:
HTML
<select id="select"> <option value='{"array":["a","b"]}'>Option</option> </select> <button onClick="getArrayIndex()">Button</button>--> Obtuve una matriz con dos elementos (a y b) almacenados dentro de un valor en una etiqueta de opción.
JS
function getArrayIndex() { alert(option.value[0]); }Entonces, lo que necesito es que el mensaje de alerta muestre solo un elemento de la matriz, espero que esto sea posible de alguna manera, ¡gracias por las respuestas! Como puede ver, traté de mostrar solo el elemento 0, en este caso "a", pero no funciona. También probé estos:
alert(option.value.array[0]); alert(option.value.array(0)); alert(option.value(0)); alert(option.value.[0]);...y así. Pero ninguno de estos funciona.
Su value es una cadena que contiene JSON que define un objeto que contiene una propiedad de array con una matriz, en lugar de ser realmente una matriz. Para usar solo el primer elemento en esa matriz, debe analizar el JSON en el objeto y la matriz, luego acceder a la matriz desde el objeto y obtener su primer elemento:
alert(JSON.parse(option.value).array[0]); // "a" Tenga en cuenta que su función getArrayIndex actualmente usa un identificador de option que no parece estar definido en ninguna parte. Si desea utilizar el valor seleccionado actualmente en la selección, entonces:
function getArrayIndex() { const select = document.getElementById("select"); const value = select.value; if (value) { alert(JSON.parse(value).array[0]); } } Nota al margen: me gustaría xyz -controladores de eventos de estilo atributo. En su lugar, conecte el controlador de eventos utilizando técnicas modernas (como addEventListener ). También tenga en cuenta que el type predeterminado del elemento del button es "submit" , por lo que si ese botón está en un form , de forma predeterminada enviará el formulario.