Объединить значения массива — vuejs

#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 для пустого массива?