#javascript
#javascript
Вопрос:
Моя программа выбирает массив на основе последней буквы того, что вводит пользователь, и выбирается имя выбранного массива. Я хочу найти длину массива, имя которого совпадает с последней буквой слова, введенного пользователем. Выбор буквы / массива работает, но длина — нет. в основном это стиль слова foot ball.
Я пробовал это, но это не работает:
var a = ['quasar','Quebec','quercetin']
var b = ['boron','broky','branka']
var c = ['cop','camera','controler','copito']
//i dint write all of the variables becous it woud be to long but his works as an example.
function hrat() {
var input = document.getElementById("text").value;
var lastChar = input.substr(input.length - 1);
console.log (lastChar);
console.log ((lastChar).length);
var number = Math.floor(Math.random() * (lastChar).length);
Комментарии:
1. Поскольку ваша переменная даже вызывается
lastCharacter
, она всегда будет иметь длину 1. Зачем вообще пытаться получить длину программно?2. Все здесь является строкой — у вас нет никаких массивов. Вы можете запросить длину строки, поскольку это свойство предоставляется объекту String . Но длина
lastChar
равна 1 — это один символ, а не строковый объект — у него нет свойства length . Чего вы пытаетесь достичь?3. вы можете просто использовать
lastChar.length
, не нужно вводитьlastChar
скобки.4. Почему один символ должен иметь длину, отличную от 1? Вы имели в виду ссылку на длину ввода? Как вы думаете
lastChar.length
, что на самом деле возвращается?5. Чего вы хотите? Последний символ любого слова всегда равен 1.
Ответ №1:
Я предполагаю, что вы хотите что-то вроде этого.
const DATA = {
search: {
a: ['quasar','Quebec','quercetin'],
b: ['boron','broky','branka'],
c: ['cop','camera','controler','copito'],
}
}
const getSearchEntryArray = (value) => {
const {search} = DATA;
const output = search[value];
return output || [];
}
const getRandomIndex = (array) => {
return array.length > 0 ? Math.floor(Math.random() * array.length) : -1 ;
}
const getOutput = (value) => {
const resultArray = getSearchEntryArray(value);
const index = getRandomIndex(resultArray);
return resultArray[index];
}
const hrat = () => {
event.preventDefault();
const input_text = document.getElementById("text");
const input = {
_value: input_text.value,
get lastChar() {
return this._value.substr(this._value.length - 1);
},
};
console.log(getOutput(input.lastChar));
input_text.value = '';
}
<form onsubmit="hrat()">
<input id="text">
<button>Send</button>
</form>
Ответ №2:
Я просто понимаю, что вы принимаете ввод идентификатора массива, а затем проверяете длину этого массива. пожалуйста, поправьте меня, если я ошибаюсь.
var a = ['quasar','Quebec','quercetin']
var b = ['boron','broky','branka']
var c = ['cop','camera','controler','copito']
//i dint write all of the variables becous it woud be to long but his works as an example.
function hrat() {
var input = document.getElementById("text").value;
var lastChar = input.substr(input.length - 1);
console.log (lastChar);
console.log (this[lastChar].length);
//OR
console.log (window[lastChar].length)
var number = Math.floor(Math.random() * this[lastChar].length);