#arrays #vue.js #merge
#массивы #vue.js #объединить
Вопрос:
Я хочу создать новый массив на основе существующего массива. По сути, я обучаюсь создавать варианты Shopify на основе значения текстового поля. Прямо сейчас я разделяю значение текстового поля запятой и сохраняю в массиве. На основе этих массивов мне нужен новый массив вариантов.
Варианты массивов:-
variant_size = ['small','medium','big'];
variant_color = ['red','blue','green'];
variant_material = [];
variant_style = ['style1','style2'];
Мой ожидаемый результат:-
new_array = [
{'small','red','style1'}
{'small','red','style2'}
{'small','blue','style1'}
{'small','blue','style2'}
{'small','green','style1'}
{'small','green','style2'}
{'medium','red','style1'}
{'medium','red','style2'}
{'medium','blue','style1'}
{'medium','blue','style2'}
{'medium','green','style1'}
{'medium','green','style2'}
{'big','red','style1'}
{'big','red','style2'}
{'big','blue','style1'}
{'big','blue','style2'}
{'big','green','style1'}
{'big','green','style2'}
];
Если массив пуст, как variant_material в приведенном выше примере, пропустите этот массив. Ниже приведен скриншот текстового поля, которое у меня есть.
Это то, что я тренирую для достижения и Это мои текстовые поля.
Комментарии:
1.
[{'small','medium','big'}]
etc недопустим. что вы пытались сгенерировать ожидаемый результат?2.
axios.post('/productData') .then(response => { this.variant_size = response.data.variants.variant_size.split(","); this.variant_color = response.data.variants.variant_color.split(","); }); let variant_size = [{'variant_size' : this.variant_size}]; let variant_color = [{'variant_color' : this.variant_color}];
что я делаю прямо сейчас, так это извлекаю значение текстового поля, вставляю через запятую и сохраняю в массиве
Ответ №1:
Попробуйте это, просто перебирайте каждый массив, для которого вы хотите сделать перестановки.
Вам необходимо изменить исходный массив и ожидаемый результат, поскольку оба являются недопустимыми javascript.
// object of variant's
const variant = {
size: ['small', 'medium', 'big'],
color: ['red', 'blue', 'green'],
material: [],
style: ['style1', 'style2']
}
// loop
let variants = []
for (let size of variant.size)
for (let color of variant.color)
for (let style of variant.style)
variants.push([size, color, style])
// result
console.log(JSON.stringify(variants, null, 2))
Комментарии:
1. Как я могу проверить, не определен ли массив в цикле
variant_color: [Array(3)] variant_material: [undefined] variant_size: [Array(3)] variant_style: [undefined] variant_title: [undefined]
2. как вы это делаете?
3. Пожалуйста, просмотрите мой код. awesomescreenshot.com/image/5480266 /…
4. В приведенном выше коде вы не упомянули материал в цикле for. как я могу пропустить цикл for для пустого массива?