Длина массива в переменной

#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);