#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. О, теперь я понимаю! Если бы я сделал то же самое с передаваемым строковым значением, оно имело бы другой формат. Я только что заставил это работать, спасибо!