Вопрос Javascript как сделать решение математических задач с несколькими числами?

Регистрация
15 Дек 2013
Сообщения
61
Репутация
0
Спасибо
0
Монет
0
Мне нужно сделать так, чтобы я мог складывать сразу несколько чисел, а не только «1+1».

Вопрос в том, что нужно дописать в коде, чтобы я мог складывать сразу «1+1+1» три числа или больше чисел и получать правильный ответ?

Сейчас если я пишу в поле для ввода «1+1+1» в результате я получаю «2», но это неправильно, должен быть ответ «3».

Не читается следующий знак «+». Как сделать чтобы он читался?























ОТПРАВИТЬ









var chatbox = document.getElementById("chatbox");

var messageInput = document.getElementById("messageInput");

var sendButton = document.getElementById("sendButton");



//КНОПКА

sendButton.addEventListener("click", function () {

sendMessage();

});



//ENTER

messageInput.addEventListener("keyup", function (event) {

if (event.keyCode === 13) {

event.preventDefault();

sendMessage();

}

});

//-------------

//ЗАПРОС

function sendMessage() {

var message = messageInput.value.trim();



if (message !== "") {

addMessage("Запрос", message);

messageInput.value = "";



if (message.toLowerCase().includes("+")) {

var numbers = message.split("+");

var result = parseInt(numbers[0]) + parseInt(numbers[1]);

addMessage("Результат", result);

}

}

}



//ИМЯ ДЕЙСТВИЯ

function addMessage(name, message, className) {

var messageElement = document.createElement("div");

messageElement.innerHTML = "" + name + ": " + message;

chatbox.appendChild(messageElement);

chatbox.scrollTop = chatbox.scrollHeight;

}





 
Если не заморачиваться, можно eval использовать
 
Чтобы добавить поддержку сложения нескольких чисел, вам нужно изменить функцию `sendMessage()`. Вместо того, чтобы использовать `parseInt()` для преобразования каждого числа в массиве `numbers` в целое число, вы можете использовать функцию `Array.reduce()`, чтобы сложить все числа вместе. Функция `Array.reduce()` принимает два аргумента: начальное значение и функцию. Начальное значение будет использовано для инициализации суммы, а функция будет использоваться для сложения текущего значения с каждым элементом массива. В вашем случае начальное значение будет равно 0, а функция будет складывать текущие значения.

Вот измененный код функции `sendMessage()`:

```
function sendMessage() {
var message = messageInput.value.trim();

if (message !== "") {
addMessage("Запрос", message);
messageInput.value = "";

if (message.toLowerCase().includes("+")) {
var numbers = message.split("+");
var result = numbers.reduce((a, b) => a + b, 0);
addMessage("Результат", result);
}
}
}
```

Этот код будет работать так же, как и старый код, но он будет поддерживать сложение нескольких чисел. Например, если вы введете `1+2+3`, функция `sendMessage()` будет возвращать `6`.
 
Пожалуйста имейте ввиду, что этот пользователь забанен
Почему устаревший var, а не современный let?
Нейросеть не понимает, что строку надо преобразовать в число. Правильно: let result = message.split('+').reduce((a, b) => a + parseInt(b), 0); Переменная numbers не нужна.
 
Чтобы решить эту проблему, вы можете изменить код в функции sendMessage(). Вместо того, чтобы складывать только первые два числа, вы можете использовать цикл для сложения всех чисел. Вот как это можно сделать: function sendMessage() {
var message = messageInput.value.trim();

if (message !== "") {
addMessage("Запрос", message);
messageInput.value = "";

if (message.toLowerCase().includes("+")) {
var numbers = message.split("+");
var result = 0;
for (var i = 0; i < numbers.length; i++) {
result += parseInt(numbers);
}
addMessage("Результат", result);
}
}
}
Теперь, если вы введете «1+1+1» в поле для ввода и нажмете кнопку отправки или клавишу Enter, вы увидите правильный результат «3».
 
Назад
Сверху