#react-native
Вопрос:
У меня есть поле множественного выбора, в котором я буду выбирать несколько значений, но когда я отправляю эти данные на серверную часть, они должны отображаться в следующем формате:
"data":
[
{
"vehicle_id": "VEH1",
},
{
"vehicle_id": "VEH2",
},
]
но когда я выбираю несколько значений из выпадающего списка, я получаю данные в формате массива:
"data":[
{
"vehicle_id":["VEH1","VEH2"]
}
]
Как я могу отправить данные в формате, который я добавил в начале? .
Код:
const getSelectedVehices = (selectedvehicles: any[]) => {
const vehicles: Array<string> = [];
const items = new Map<string, string>();
vehicleListData.forEach((item) => {
items.set(item.vehicleName, item.vehicleAliasId);
});
selectedvehicles.forEach((item) => {
vehicle.push(items.get(item) || '');
});
return vehicles;
};
const prepareSelectedVehiclesServices = (electedvehicles: any[]) => {
const vehicles: Array<string> = [];
const items = new Map<string, string>();
vehicleListData.forEach((item) => {
items.set(item.vehicleName, item.vehicleAliasId);
});
vehicles.forEach((item) => {
if (items.has(item)) {
vehicles.push(items.get(item) || '');
}
});
return vehicles;
};
<MultiSelect
items={pickerOptions.vehicleServices}
onSelectedItemsChange={(Ids: any[]) => {
const selectedVehiclesServices = getSelectedVehicles(Ids);
formikData.setFieldValue(`vehicles`, [
{
vehicleAliasId: selectedVehiclesServices,
},
]);
}}
selectedItems={{
selectedItemIdentifiers: prepareSelectedVehiclesServices(
formikData.values.services || initialServiceValues.services,
),
}}
></MultiSelect>
выше приведен код, который я добавил.
Ответ №1:
Просто спроецируйте массив в свой новый формат с .map()
помощью . Что-то вроде этого:
let myData = { "data":[
{
"vehicle_id":["VEH1","VEH2"]
}
]};
let myNewData = { "data": myData.data[0].vehicle_id.map(d => ({
"vehicle_id": d
}))};
console.log(myNewData);
Комментарии:
1. решение, которое вы предложили, не работает, вы можете проверить код, который я написал, и сообщить мне, где я должен внести изменения в свой код.
2. @NikitaShah: Код, показанный в этом ответе, является выполняемым фрагментом кода, вы можете видеть, что он наглядно проецирует один формат в другой. Каким образом вы пытались применить это в своем коде? (Код, показанный в настоящее время в вопросе, не использует предложение этого ответа.) Насколько конкретно эта попытка провалилась?
3. Я попытался зациклиться внутри формика, но не уверен, правильно ли я это сделал