Lo que intento lograr es agrupar de alguna manera todos los valores indexados en una matriz, que no sea el llamado. Para aclarar, he escrito el siguiente código.

El primer document.write funciona como se espera e imprime la cadena indexada que se correlaciona con el botón presionado. Con el segundo document.write, me gustaría imprimir todos los demás elementos indexados, excepto el que se ha hecho clic / seleccionado. ¿Cómo agrupo todos los demás elementos indexados? No hace falta decir que para todos ustedes gurús de Javascript, el intento myarray[!clicked]) en el código no funciona.

<html>

<body>
<script>
var myarray = ["button1", "button2", "button3"];
function pushed(clicked) {

for (var i=0; i<myarray.length; i++) {

document.write("the button that has been pushed is" + myarray[clicked]);
document.write("the buttons that have not been pushed are" + myarray[!clicked]);
}
}
</script>

<button onclick="pushed(0)"> Button 1 </button>
<button onclick="pushed(1)"> Button 2 </button>
<button onclick="pushed(2)"> Button 3 </button>

</body>
</html>
0
treetop 4 mar. 2018 a las 18:29

3 respuestas

La mejor respuesta

Debería imprimir su botón de clic y luego su oración sobre los que no hicieron clic. Luego puede usar el índice del clic y un condicional para excluirlo de los demás que está imprimiendo.

document.write("the button that has been pushed is" + myarray[clicked]);
document.write("the buttons that have not been pushed are: ");

for (var i = 0; i < myarray.length; i++) {
    if (i !== clicked) {
        document.write(myarray[i]);       
    }
}
1
Chris Sharp 4 mar. 2018 a las 15:42

No necesita iterar a través de la matriz y simplemente hacer:

var clicked = myarray[clicked];
var notClicked = myarray.filter(function(item) {
    return item !== clicked;
});
document.write('clicked is ' + clicked);
document.write('not clicked are ' + notClicked);
1
jCobb 4 mar. 2018 a las 15:37

Prueba esto:

function pushed(clicked) {

document.write("the button that has been pushed is" + myarray[clicked]);
document.write("the buttons that have not been pushed are" + myarray.filter((elt, i) => i !== clicked).join(", "));
}
0
Elias Platek 4 mar. 2018 a las 15:38