Я хочу создать объект с заданной структурой:
const questions = [
{
id: '1',
instruction: 'Question1',
options: {
'a': 'SomeText1',
'b': 'SomeText2',
'c': 'SomeText3'
},
correct: ['c']
},
{
id: '2',
instruction: 'Question2',
options: {
'a': 'SomeText1',
'b': 'SomeText2',
'c': 'SomeText3',
'd': 'SomeText4'
},
correct: ['a']
},
{
id: '3',
instruction: 'Question3,
options: {
'a': 'SomeText1',
'b': 'SomeText2'
},
correct: ['b']
}
]
У меня есть массивы, содержащие необходимую информацию для заполнения этого объекта и создания его с использованием .map()
.
const questions =
[ 'Question1',
'Question2',
'Question3'
]
const answers =
[
'Answer1',
'Answer2',
'Answer3'
]
const options = [
[ 'Option1', 'Option2', 'Option3' ],
[ 'Option4', 'Option5', 'Option6' ],
[ 'Option7', 'Option8', 'Option9' ]
]
function toJson()
const alphabet = ['a', 'b', 'c', 'd', 'e'];
const json = questions.map((question, index) => (
{
id: index + 1,
instruction: question,
options: Object.assign({}, options[index]),
correct: answers[index]
}
))
}
У меня проблема только с ключом options
.Как видите, я хочу иметь буквы в качестве ключей, в зависимости от того, сколько ответов на вопрос.Эта функция дает мне цифры в качестве ключей, когда я использую Object.assign()
, и я не знаю, как заменить их на буквы из массива alphabet
.
РЕДАКТИРОВАТЬ:
Так что решение дляoptions
ключ в желаемом объекте:
options: Object.assign(
{},
...options[index].map((a, i) => ({ [alphabet[i]]: a }))
),
Теперь я могу создать объект с последовательными буквами алфавита с назначенным ответом.