Построение массива в методе vue

#javascript #vue.js

Вопрос:

В настоящее время я отправляю несколько значений через событие изменения выбора в vue, и я регистрирую значения в своем вызове метода, чтобы убедиться, что они существуют в методе( они существуют).

Моя проблема в том, что мне нужно взять значения в этом методе и создать массив, структурированный следующим образом:

 { "123" :   [   { "item":"B-24", "new_date":"2022-11-30" },   ]   }  

Моя проблема в том, что я могу поместить значения в массив, но, похоже, я не могу понять, как реструктурировать массив в соответствии с приведенным выше форматом.

Любые предложения о том, как структурировать массив в методе, будут высоко оценены

 var vm =  new Vue({  el: "#app",  props: {    },  data: {  testing_dates:['2021-11-29', '2021-11-30'],  cat_id: [123]  },  methods: {  testChange(event, id){  item = "B-24";   console.log(event.target.value);  console.log(id);   var new_array = new Array(); //create an empty array  new_array.push(item);  new_array.push(event.target.value);  new_array.push(id);  },  }, });  
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"gt;lt;/scriptgt; lt;div id="app"gt; lt;ligt;Category ID: {{ cat_id }}lt;/ligt; lt;li style="list-style: none;"gt;  lt;select style="width: auto;" @change="testChange($event, cat_id)"gt;  lt;option selected disabledgt;Optionslt;/optiongt;  lt;option v-for="date in testing_dates" :value="date"gt;{{ date }}lt;/optiongt;  lt;/selectgt; lt;/ligt; lt;/divgt; 

Комментарии:

1. Можете ли вы подробнее рассказать о результатах? Какова связь между идентификатором , который кажется первым cat_id item , и new_date

2. @MajedBadawi Извините, да: я надеюсь сделать так, чтобы это cat_id был основной ключ, а затем объект, прикрепленный к этому идентификатору, был бы item и new_date . Таким образом, элемент и новая дата будут иметь имя indeces, но будут на уровень ниже, прикрепленные к cat_id в качестве ключа

Ответ №1:

Вы можете получить первый идентификатор, используя реструктуризацию или как id[0] .

Затем создайте пустой объект и добавьте к нему новую пару, где key первый id и value массив с одним объектом, имеющим item и new_date

 testChange(event, id){  const item = "B-24";  const [firstId] = id; // get first id  const obj = {};  obj[firstId] = [ { item, new_data: event.target.value } ];  console.log(obj); }  

Более короткая версия:

 testChange(event, id){  const obj = {  [id[0]]: [ { item: "B-24", new_data: event.target.value } ]  };  console.log(obj); }  

Комментарии:

1. Я также мог бы сделать это, инициализировав obj данные, верно? значит, это может быть общий объект, которым я мог бы манипулировать здесь?

2. @Geoff_S да , вы можете инициализировать его в data качестве obj: {} , а затем получить доступ/изменить его с помощью this.obj

3. Спасибо, я думаю, что у меня есть это, за исключением одного: id[0] и даже « const[firstId]`, похоже, возвращает только первое число моего cat_id, которое равно «1», но я, похоже, не могу получить полный идентификатор 123 в качестве ключа объекта?

4. Приведенный выше пример показывает, что id печать массива [ 123 ] внутри функции

5. О, теперь я понимаю! Если бы я сделал то же самое с передаваемым строковым значением, оно имело бы другой формат. Я только что заставил это работать, спасибо!