Найдите первый элемент массива и покажите его в функции карты, но имейте предупреждение — Реагируйте

#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. Обдумав этот вопрос, спасибо, что сработало