У меня есть массив объектов, который выглядит следующим образом:
[
{
type: 'car',
choices: [
'audi',
'honda',
'bmw',
'ford'
],
},
{
type: 'drink',
choices: [
'soda',
'water',
'tea',
'coffee'
],
},
{
type: 'food',
choices: [
'chips',
'pizza',
'cookie',
'pasta'
],
}
]
Используя lodash, как преобразовать его во что-то похожее на это:
[
{
question: [
{
drink: "tea"
},
{
car: "bmw"
}
]
},
{
question: [
{
food: "cookie"
},
{
car: "ford"
}
]
},
{
question: [
{
drink: "soda"
},
{
food: "pizza"
}
]
},
{
question: [
{
food: "chips"
},
{
drink: "water"
}
]
},
{
question: [
{
car: "audi"
},
{
food: "pasta"
}
]
},
{
question: [
{
car: "honda"
},
{
drink: "coffee"
}
]
},
]
Логика следующая:
- Каждый вопрос имеет комбинацию из 2 вариантов, где каждый вариант относится к разному типу (например, машина и еда).
- Сочетание разных типов должно происходить только дважды (машина, еда).
- Нет дублирования выбора.
- Выбор должен быть рандомизирован.
Я пытался сгладить массив с помощью этой функции
let flattenItems = _.flatMap(items, ({ type, choices}) =>
_.map(choices, choice => ({
question: [
{ type: type, choice: choice },
{ type: type, choice: choice }
],
})
));
но это не то, что мне нужно, и это не случайно. Я не уверен, что мой подход правильный, я думаю, что я должен использовать фильтр или уменьшить
Любая помощь в том, как решить эту проблему, будет полезна при использовании JS или lodash.