Как бы я использовал известное значение в массиве, чтобы найти другое значение в том же массиве?

#javascript #arrays #function #object

#javascript #массивы #функция #объект

Вопрос:

Я работаю со странной структурой данных, которая выглядит примерно так:

 const time = {
      60: [
        { acc: 98.97, language: 'english', punctuation: false, wpm: 96, raw: '46' },
        { acc: 92.63, language: 'english_10k', punctuation: false, wpm: 59.19, raw: 60.99 }
      ]
};
  

У меня уже есть значение wpm (например, 96), но мне нужно найти значение raw из того же массива, из которого пришло 96. Я предпринял попытку следующим образом:

 function findTimeRaw() {
      let timeVal = 96
      let {raw} = time[timeVal].find(({wpm})=>wpm===timeVal);
      return raw
}
  

Теоретически это должно возвращать «46», но вместо этого возвращает undefined.

Кто-нибудь может объяснить, где я ошибся?

Комментарии:

1. Это time[timeVal] возвращает undefined в соответствии с опубликованным time объектом, потому что нет никакого свойства, равного 96 .

2. Вы уже знаете timeVal ? или в этой time структуре есть несколько ключей?

3. я уже знаю значение времени, оно может быть 15, 30, 60 или 120 — но я не включил это для простоты

4. let {raw} = time[60].find(({wpm})=>wpm===timeVal);

5. Я не понимаю, как это может быть wpm===timeVal поскольку в данном случае timeval = 60, но спасибо

Ответ №1:

Вы путаете переменные time и WPM — они должны быть разными.

 const time = {
      60: [
        { acc: 98.97, language: 'english', punctuation: false, wpm: 96, raw: '46' },
        { acc: 92.63, language: 'english_10k', punctuation: false, wpm: 59.19, raw: 60.99 }
      ]
};

function findTimeRaw() { 
      const timeVal = 60;
      const wpmToFind = 96;
      const {raw} = time[timeVal].find(({wpm})=>wpm===wpmToFind);
      return raw
}
console.log(findTimeRaw());