Я пытаюсь изменить значение элемента в массиве на основе сопоставления других элементов в массиве. Массив может содержать сведения о разделе (не уникальном), уникальный идентификатор и значение, которое я хочу изменить (в данном случае флаг «выбрано»). Цель состоит в том, чтобы иметь возможность иметь несколько элементов, которые могут иметь свой выбранный флаг. В любом отдельном разделе может быть «выбран» только один элемент, но в нескольких разделах может быть «выбран» отдельный элемент. Концептуально, я думаю, это можно представить так же, как наличие нескольких групп переключателей.
Конечная цель состоит в том, чтобы иметь возможность использовать state
для запоминания выбора, сделанного в компоненте, созданном с использованием свойств. Я очень хочу понять, а не просто копировать. Далее я займусь мутациями состояния, но лучше сначала решить эту проблему.
Итак, возьмите массив, например:
menuItems: [
{
section: 'National',
id: 'First item',
selected: false
},
{
section: 'National',
id: 'Second item',
selected: false
},
{
section: 'National',
id: 'Third item',
selected: true
},
{
section: 'Local',
id: 'Fourth item',
selected: false
},
{
section: 'Local',
id: 'Fifth item',
selected: false
},
{
section: 'Local',
id: 'Sixth item',
selected: true
}
]
И некоторые строки поиска, такие как:
searchSection: 'National',
searchId: 'First item'
Как мне создать функцию, которая могла бы изменить выбранный флаг элемента с id: First item
на true, остальные (второй, третий элемент) на false и ничего не менять в разделе «Локальный»?
Я пытался разобраться, используя циклы forEach
, но безрезультатно, хотя это кажется правильным подходом. Использование findIndex
для раздела, похоже, обречено на неудачу, поскольку нужно найти несколько элементов.
Первый ТАК вопрос - поэтому заранее извиняюсь, если проблемы с тем, как я спросил. Я использую Vue3. Все советы оценены.