#javascript #html #indexof
#javascript #HTML #indexof
Вопрос:
const questions = [
{
"question": "What is the scientific name of a butterfly?",
"answers": ["Apis", "Coleoptera", "Formicidae", "Rhopalocera"],
"correctIndex": 3
},
{
"question": "How hot is the surface of the sun?",
"answers": ["1,233 K", "5,778 K", "12,130 K", "101,300 K"],
"correctIndex": 1
},
]
Я пытаюсь так поступить, но возвращаю -1:
console.log(questions.findIndex(value => value.answers.indexOf() === 'Apis'));
Например, если я хочу получить indexOf ‘Api’, я получаю -1.
Я пытаюсь сравнить значение ‘CorrectIndex’ со значением массива index of answers и вернуть, если оно правильное или нет.
Комментарии:
1.
questions
это массив, который может содержать более одного элемента. Что делать, если их больше одного? Знаем ли мы, какой индекс использовать, чтобы перейти к правильному элементу вопрос-ответ, прежде чем получить индекс ответа?2.
value.answers.indexOf()
отсутствует аргумент. Почему вы пытаетесь сравнить число со строкой?3. Вашему вопросу не хватает контекста. Откуда
'Apis'
он берется? Как вы узнаете, с каким вопросом вquestions
нем нужно сравнивать?
Ответ №1:
Если я правильно понял, вы хотите получить индекс элемента в answers
массиве этого объекта. попробуйте это:
console.log(questions.map(value => value.answers.indexOf('Apis')));
это даст вам массив индексов, значение которых равно «Api».
Если у вас есть повторяющиеся значения в одном и том же массиве, вы можете сделать это:
console.log(questions.map(value => [value.answers.indexOf('Apis')]));
Это сохранит массив массива, в котором вы можете получить индексы «API» каждого объекта.
Я пытаюсь сравнить значение ‘CorrectIndex’ со значением массива index of answers и вернуть, если оно правильное или нет.
Попробуйте это
const questions = [
{
"question": "What is the scientific name of a butterfly?",
"answers": ["Apis", "Coleoptera", "Formicidae", "Rhopalocera"],
"correctIndex": 3
},
{
"question": "How hot is the surface of the sun?",
"answers": ["1,233 K", "5,778 K", "12,130 K", "101,300 K"],
"correctIndex": 1
},
]
console.log(questions.map(value => value.answers.indexOf('Apis') === value.correctIndex));
Комментарии:
1. Это потому, что «Api» является первым элементом массива.
2. Вам нужен индекс объекта, в массиве ответов которого есть API?
3. И поэтому, если правильный ответ на «вопрос» «Каково научное название бабочки?» — Rhopalocera, это связано с тем, что ваш «Правильный индекс» установлен на 3. И индекс 3 означает, что это 4-й элемент массива.
4. Добавление других значений по-прежнему возвращает 0
5. Я немного изменил свой ответ. Посмотрите и дайте мне знать, работает ли это.
Ответ №2:
Вы просто неправильно использовали indexOf . Это довольно просто исправить:
const questions = [
{
question: "What is the scientific name of a butterfly?",
answers: ["Apis", "Coleoptera", "Formicidae", "Rhopalocera"],
correctIndex: 3
},
{
question: "How hot is the surface of the sun?",
answers: ["1,233 K", "5,778 K", "12,130 K", "101,300 K"],
correctIndex: 1
}
]
questions.forEach(question => {
console.log(question.answers.indexOf('Apis'))
});
Поймите, что indexOf является функцией и возвращает строку.
Комментарии:
1.
value.answers.indexOf('Apis')>-1
2. @SulmanMalik вы можете проверить мой фрагмент? Я обновил его, и теперь он работает
Ответ №3:
почему вы сравниваете value.answers.indexOf()
правильный синтаксис должен быть
console.log(questions.findIndex(value => value.answers.indexOf('element')));