Я хочу изменить вложенный массив, объект на другую структуру, поэтому я задаю вопрос.
// before
const beforeData = [
{
product_id: 1,
attribute_values: [
{ attribute_value_id: 1 },
{ attribute_value_id: 2 },
{ attribute_value_id: 3 }
]
},
{
product_id: 2,
attribute_values: [
{ attribute_value_id: 1 },
{ attribute_value_id: 2 },
{ attribute_value_id: 3 }
]
},
(...)
];
// after
const afterData = [
{ product_id: 1, attribute_value_id: 1 },
{ product_id: 1, attribute_value_id: 2 },
{ product_id: 1, attribute_value_id: 3 },
{ product_id: 2, attribute_value_id: 1 },
{ product_id: 2, attribute_value_id: 2 },
{ product_id: 2, attribute_value_id: 3 },
];
Я пытался создать нужную структуру данных, используя библиотеку.Но я не получил то, что хотел, и получил помощь от lodash .Обратите внимание, что attribute_values.length
точно такой же.
const getAttributeValueId = _.chain(beforeData[0].attribute_values)
.flatten()
.value();
console.log(getAttributeValueId)
На консоли:
[ { attribute_value_id: 1 },
{ attribute_value_id: 2 },
{ attribute_value_id: 3 } ]
const getProductId = () => {
const arrOne = [];
data.forEach((val, idx) => {
arrOne[idx] = { product_id: val.product_id };
});
const arrTwo = [];
_.forEach(arrOne, (val, idx) => {
for (let i = 0; i < getAttributeValueId.length; i++) {
arrTwo.push(arrOne[idx]);
}
});
return arrTwo;
};
console.log(getProductId());
На консоли:
[ { product_id: 1 },
{ product_id: 1 },
{ product_id: 1 },
{ product_id: 2 },
{ product_id: 2 },
{ product_id: 2 },
{ product_id: 3 },
{ product_id: 3 },
{ product_id: 3 } ]
Я делаюЯ не знаю, как я могу вставить attribute_value_id
для каждого массива больше.Я хотел решить это сам, но у меня недостаточно способностей, чтобы решить это.Буду признателен за вашу помощь.
И у меня есть вопрос.Это проще, чем использовать for
цикл, чтобы решить с помощью метода массива, как reduce
, map
?
Спасибо за чтение.