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