#javascript
Вопрос:
Я пытаюсь преобразовать объект, значения свойств которого являются массивами, в массив объектов, где каждый объект имеет те же свойства, что и исходный, но значения взяты из массивов.
Например, учитывая следующий массив:
fruit = [{ "apple": [2, 3], "orange": [2, 3] }]
Я хотел бы:
fruit = [{ "apple": 2, "orange": 2 }, { "apple": 3, "orange": 3 } ]
Как я должен сделать это с помощью JavaScript?
Ответ №1:
Более логично fruit
быть объектом, а не массивом только с одним элементом. В этом случае вы можете перебрать количество свойств (отслеживая индекс) и использовать вложенный цикл для перебора каждого значения свойства и извлечения элемента из индекса внешнего цикла.
fruit = { "apple": [2, 3], "orange": [2, 3] } const res = Object.values(fruit)[0].reduce((a,b,i) =gt; { a.push(Object.fromEntries(Object.keys(fruit).map(e =gt; [e, fruit[e][i]]))) return a; }, []) console.log(res)
Комментарии:
1. Я не уверен, что, поскольку вопрос закрыт, этот комментарий может быть показан. с вашим советом, что делать, если у меня есть 3 значения массива, например : фрукты = { яблоко: [2,2,2], апельсин:[3,3,3] }. этот код останется одним пустым объектом, @Spectric
2. @CODINNN Я обновил свой ответ. Теперь это должно сработать. Извини за это.
3. Спасибо, это отлично работает. вы так добры.