#javascript #arrays #reactjs #json
#язык JavaScript #массивы #реагирует на #json
Вопрос:
Я пытаюсь создать красивые объекты массивов, но вместо этого появляется это.
{ "label": [ "Instagram" ], "value": [ "@username" ] }
Итак, как я могу это изменить? Чего я хочу, так это быть таким
{ "label": "instagram", "value": "@username" },
Я не знаю, как это произошло, но я предполагаю, что это было результатом того, что я использовал formik для определения начальных значений сложного вложенного массива из strapi. Я использовал array.map для отображения объектов. Поэтому, возможно, именно поэтому все было так грязно.
Так каково же решение этой проблемы? Форматирование массивов массивов в объекты? Слияние? Обращение? Я понятия не имею, как это называлось. Заранее спасибо всем, кто ответил на это.
(обновлено) Начальные значения:
const formik = useFormik({ enableReinitialize: true, initialValues: { name: vendor?.name || '', description: vendor?.description || '', company: { social_media: [ { label: vendor.company?.social_media.map((x) =gt; x.label) || '', value: vendor.company?.social_media.map((x) =gt; x.value) || '' } ] } },
Комментарии:
1. Вы не показали ни одного кода, который привел к созданию этого объекта, поэтому помочь невозможно.
2. В следующий раз ,пожалуйста, сначала попробуйте что-нибудь, иначе, похоже, вот мой вопрос, решите его за меня.
Ответ №1:
Вы можете использовать for..in
и join
метод массива
const data = { "label": [ "Instagram" ], "value": [ "@username" ] }; for (let keys in data) { data[keys] = data[keys].join(',') }; console.log(data)
Комментарии:
1. Большое вам спасибо, сэр, за ваш ответ, используя .join («), чтобы устранить проблему с беспорядочным массивом внутри массива, с которой я сталкивался раньше. Теперь у меня есть довольно много объектов, такими, какими я хотел быть.
2. Это не я. Я все еще новый пользователь, и мне нужно не менее 15 репутации, чтобы проголосовать либо за, либо против. Я принял это как лучший ответ, хотя
Ответ №2:
Array.map возвращает массив, если вы не хотите, чтобы какой-либо объект использовал Array.foreach
Или
Используйте […Array.map()]
label: [...vendor.company?.social_media.map((x) =gt; x.label)] value: [...vendor.company?.social_media.map((x) =gt; x.value)
Комментарии:
1. вы не можете использовать
map
с объектами2. Но он упомянул, что использует .map, что делает его беспорядочным
3. Спасибо за ваш ответ, но я попробовал ваше решение, но оно не работает с начальными значениями Formik. Однако другое решение с использованием .join(«) решило мою проблему.