Как получить упорядоченный индекс после изменения значений в массиве в угловых?

У меня есть список элементов в массиве, скажем,

Design
Analysis
Testing
Development

Чей индекс будет,

0,1,2,3

Здесь я использую угловое перетаскивание, которое используется для перетаскивания элемента списка. С использованием dragula я меняю положение массива, скажем,

Analysis
Design
Development
Testing

Порядок меняется, но позиция индекса остается такой же, как,

1,0,3,2

Здесь позиция индекса находится не в порядке и выглядит как старое значение индекса, несмотря на порядок, в котором она выглядит. Принимая во внимание, что мне нужно иметь одинаковую позицию индекса независимо от того, какие изменения происходят внутри массива, что означает, что всегда позиция индекса должна начинаться с 0,1,2,... so on даже есть изменение в порядке.

HTML-компонент, который я использовал,

    <div class="card-content">
        <div dropDirective (dropEvent)="addDropItem($event)" class="droppable" [dropHighlight]="'highlight'">
            <div [dragula]="'second-bag'">
                <app-generic-drop-box *ngFor="let item of itemsDropped; index as i" (editBtn)='editBtn($event)' (deleteBtn)='deleteBtn($event)' [genericBox]='item' class="arrow_box dropItem temp" (click)='indexOfItem(i)'> </app-generic-drop-box>
            </div>
        </div>
    </div>

В файле TS,

        import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ViewContainerRef, OnDestroy } from '@angular/core';
        import { Router, ActivatedRoute } from '@angular/router';
        import { ScenarioMapService } from '../scenario-map.service';

        import { DynamicFormModel } from '../dynamic-form-config/dynamic-form-model';
        import { Textbox } from '../dynamic-form-config/textbox';
        import { CONFIG } from '../../app.config';

        @Component({
          selector: 'app-drop-area',
          templateUrl: './drop-area.component.html',
          styleUrls: ['./drop-area.component.scss']
        })
        export class DropAreaComponent implements OnInit, OnDestroy {

        indexOfItem(i) {
        console.log(i); 
        }

    }

Вот console.log(i) показывает позицию индекса, если пользователь щелкает по списку, если я изменяю позицию массива, мне нужно получить упорядоченный индекс после изменения, как 0,1,2,3..... Пожалуйста, помогите мне достичь результата.

1 ответ

Чтобы сбросить индекс в массиве AngularJS, вы можете отфильтровать его без каких-либо действий.

Таким образом, индексы устанавливаются снова.

resetArr = orgArr.filter(function(){return true;});

Массив-индексы 1,0,3,2 будет 0,1,2,3 еще раз, но данные остаются на месте.

Для справки: нужно сбросить только индексы массива JavaScript Stackru Thread...

Другие вопросы по тегам