regex использует ASCII печатные символы из пробела в диапазон тильдов.
blockquote>Всякий раз, когда мы используем маркер
[A-z]
, он соответствует следующей таблице выделенных символов. Если мы используем маркер[ -~]
, он соответствует начиная сSPACE
до тильды.
Сначала необходимо изменить массив answers
в newquestion
в желаемом формате.
let question = {id: 1,description: 'how is the service',answers: [{id: 1,description: 'poor'},{id: 2,description: 'good'}]};
let newquestion = {description: 'new question',answers: ['new poor','new good']}
newquestion.answers = newquestion.answers.map((val, index) => ({ id:index+1, description: val }))
let op = {...question, ...newquestion}
console.log(op)
Если у вас все в порядке с мутацией оригинала question
, просто выполните цикл по newquestion.asnwers
и обновите question.answers
, используя соответствующие им index
Если вы хотите создать новый объект q
, используйте map
, чтобы получить массив новых ответов и создать новый объект с использованием синтаксиса распространения:
let question = {id:1,description:'how is the service',answers:[{id:1,description:'poor'},{id:2,description:'good'}]},
newquestion={description:'new question',answers:['new poor','new good']};
const newAnswers = newquestion.answers.map((description, i) => (
{ ...question.answers[i], description }
))
const q = { ...question, answers: newAnswers }
console.log(q)
Используйте простое map
, чтобы изменить значения:
const q = {...question, ...newQuestion};
q.answers = q.answers.map((e, i) => { return { id: i + 1, description: e } });