Как мне провести рефакторинг этого кода js, чтобы избежать использования eslint no-eval-fun c? - PullRequest
0 голосов
/ 07 мая 2020

Я пишу код javascript, который вызывает API и получает объект javascript в виде строки. Проблема в том, что если я конвертирую строку в код JS и использую его, я получаю предупреждение ESLint no-new-fun c.

Вот что я получаю от сервера.

Line 58:  The Function constructor is eval  no-new-func

Вот строка, которую я получаю от API:

"[{'words': 'hello', start: 0.0, end: 0.0}, {'words': 'world', start: 0.0, end: 0.0}]"

Ее следует читать как простой массив объектов

[
  {
     words: 'hello', 
     start: 0.0,
     end: 0.0
  }, {
     words: 'world',
     start: 0.0, 
     end: 0.0
  }
]

Вот код, который я использовал для преобразования строки как javascript код:

const restructureChapter = (data) => {
  if(data) {
    if(data.length>0) 
      return data.map(chapter => {
        return {
          words: chapter.word,
          startTime: chapter.start,
          endTime: chapter.end
        }
      })
    else return []
  } else return []
}

const output = 'const tempText = ' + finalText
var fn = new Function(output + ';return tempText;')
var result = fn()
var outcome = restructureChapter(result)
...