#javascript #arrays #reactjs
Вопрос:
У меня есть такие данные, как:
{ "title": 0, "name": 0, "score": 0, "summary": [ { "id": 1, "start": "2019-11-01", "end": "2019-11-04" }, { "id": 2, "start": "2019-11-01", "end": "2019-11-04" } ] }
Я пытаюсь получить доступ к первому элементу резюме, поэтому я попробовал это:
const newDate = new Date(data?.summary.map((d: any, index: number) =gt; { if (index === 0) { return ( new Date(d.start) ) } })),
хотя это работает, я получаю предупреждение:
Array.prototype.map() ожидает, что значение будет возвращено в конце функции array-обратный вызов-возврат
Я знаю, что это должно быть потому, что я ничего не возвращаю при обратном вызове, а возврат содержится в операторе if?
Комментарии:
1. Почему в первую очередь используется карта вместо прямого доступа к элементу массива?
2. Почему нет
data?.summary[0]?.start
3. Обдумав этот вопрос, спасибо, что сработало
Ответ №1:
if (index === 0) { return ( new Date(d.start) )
Вы возвращаете значение только в том случае, если index === 0.
Я не уверен, чего вы пытаетесь достичь:
const newDate = new Date(data?.summary.map((d: any, index: number) =gt; { if (index === 0) { return ( new Date(d.start) ) } })),
Я полагаю:
const newDate = newDate(data?.summary[0]?.start)
Сделаю то, что нужно.
Комментарии:
1. Так каков будет обходной путь?
2. Смотрите мой обновленный пост. Когда вы имеете дело с одним значением, а не с массивом, вам не нужна карта или какой-либо другой метод массива.
3. Обдумав этот вопрос, спасибо, что сработало
Ответ №2:
Вы можете получить доступ к первому элементу без использования map
функции:
const newDate = new Date(data?.summary[0].start)
Комментарии:
1. Обдумав этот вопрос, спасибо, что сработало