Существует альтернатива петле, ее названная рекурсия и рекурсия хвостовая рекурсия - самое приятное разнообразие, поскольку вы теоретически можете сделать это до конца времени - точно так же, как цикл: D
ps, хвостовая рекурсия часто является синтаксическим сахаром для цикла - однако в случае процедурных языков (C ++) компилятор обычно теряется, поэтому хвост -recursion не оптимизирован, и у вас может закончиться нехватка памяти (но если вы написали рекурсию, которая исчерпала память, чем у вас большие проблемы): D
больше downvotes, пожалуйста !!
рекурсия, очевидно, не является конструкцией, используемой в информатике для той же работы, что и цикл
Я думаю, вам нужно иметь столько же флажков, сколько длина массива.
Вы можете перебрать список с помощью ngFor и сохранить состояние выбранных элементов в отдельном массиве.
checked = [];
data = [
{
"id":1,
"applicationId":1,
"permissions":"Edit"
},
{
"id":2,
"applicationId":1,
"permissions":"View"
}
];
checkItem(item) {
const idx = this.checked.indexOf(item);
idx >= 0 ? this.checked.splice(idx, 1) : this.checked.push(item);
}
submitData() {
const applicationIds = this.checked.map(it => it.applicationId);
console.log(applicationIds);
}
и шаблон будет что-то вроде
<ul>
<li *ngFor="let item of data">
{{item.permissions}} <input type="checkbox" (change)="checkItem(item)">
</li>
</ul>
<button type="button" (click)="submitData()">Submit</button>