Тело typeof изменяется от строки до неопределенного при помещении в условное выражение - PullRequest
0 голосов
/ 14 февраля 2020

Последний блок if не принимает значение переменной body и преобразует его в undefined. Журнал консоли перед блоком показывает, что тип переменной равен "string", но каким-то образом в условии и в условном выражении тело превращается в undefined.

doc = doc.map(el => {
        let { title, body, _id, likes } = el
        if (title && title.length > 20) {
          el = {
            ...el,
            title:`${title.slice(0, 20)}...`,
          }
        } else if (!title || typeof title === 'undefined') {
          el = {
            ...el,
            title: '',
          }
        }
        console.log(typeof body)
        if (body.length > 55) {
          el = {
            ...el,
            body: `${body.slice(0, 55)}...`,
          }
        }
        title = el.title
        body = el.body
        console.log(typeof body)
        return {_id,title,body,likes}
      })

Выходной вывод журналов равен следующим образом:

[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
App running on port 5000...
string
undefined
string
undefined
string
undefined

Три разных результата представляют три разных документа в массиве do c и, следовательно, шесть выводов консольного журнала, относящихся к каждому значению тела и его изменению. Я не использую точку с запятой в javascript, может ли это быть причиной этой проблемы?

1 Ответ

0 голосов
/ 14 февраля 2020

До сих пор не знаю, почему предыдущий код не работал, но этот гораздо меньший код, кажется, делает свое дело

doc = doc.map(el => {
        let { title, body, _id, likes } = el
        body = `${body.slice(0, 55)}...`
        if (title && title.length > 20) {
          title=`${title.slice(0, 20)}...`
        } else if (!title || typeof title === 'undefined') {
          title= '...'
        }
        return {_id,title,body,likes}
      })

Это работает из-за того, что мне не нужно проверять длину тела больше 55, так как меньшее значение всегда будет восстанавливать его первоначальный размер. Поэтому я сначала обрежу тело, а затем название.

Спасибо всем, кто помог! Все еще хотел бы найти ошибку / проблему с более ранним кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...