Я пытаюсь добиться того, чтобы как-то сгруппировать все проиндексированные значения в массиве, кроме того, который вызывается. Чтобы уточнить, я написал следующий код.

Первый document.write работает как положено и печатает индексированную строку, которая соотносится с нажатой кнопкой. Со вторым document.write я хотел бы напечатать все другие проиндексированные элементы, кроме того, который был нажат / выбран. Как мне сгруппировать все остальные проиндексированные элементы? Разумеется, для всех вас, гуру Javascript, попытка myarray[!clicked]) в коде не работает.

<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 Мар 2018 в 18:29

3 ответа

Лучший ответ

Вы должны напечатать свою нажатую кнопку, а затем ваше предложение о не нажатых. Затем вы можете использовать индекс выбранного и условный, чтобы исключить его из других, которые вы печатаете.

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 Мар 2018 в 15:42

Вам не нужно перебирать массив и просто делать:

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 Мар 2018 в 15:37

Попробуй это:

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 Мар 2018 в 15:38