несколько выбранных данных в формате объекта

#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. Я попытался зациклиться внутри формика, но не уверен, правильно ли я это сделал