Angular 2配列削除方法解説
Angular 2で配列からアイテムを削除する方法
JavaScript、Angular、TypeScriptでAngular 2の配列からアイテムを削除する方法について説明します。
配列のインデックスを使用して削除
- 配列のインデックスがわかっている場合、直接削除できます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of items; let i = index">
{{ item }}
<button (click)="removeItem(i)">Remove</button>
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
removeItem(index: number) {
this.items.splice(index, 1); // indexから1つの要素を削除
}
}
配列の要素自体を使用して削除
- 配列の要素自体がわかっている場合、
findIndex
メソッドを使用してインデックスを取得し、splice
で削除できます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of items">
{{ item }}
<button (click)="removeItem(item)">Remove</button>
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
removeItem(item: string) {
const index = this.items.findIndex(i => i === item);
if (index !== -1) {
this.items.splice(index, 1);
}
}
}
filterメソッドを使用して新しい配列を作成
- 新しい配列を作成したい場合、
filter
メソッドを使用して元の配列から除外したい要素を除いた新しい配列を作成できます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of filteredItems">
{{ item }}
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
filteredItems: string[] = [];
removeItem(item: string) {
this.filteredItems = this.items.filter(i => i !== item);
}
}
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of items; let i = index">
{{ item }}
<button (click)="removeItem(i)">Remove</button>
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
removeItem(index: number) {
this.items.splice(index, 1); // indexから1つの要素を削除
}
}
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of items">
{{ item }}
<button (click)="removeItem(item)">Remove</button>
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
removeItem(item: string) {
const index = this.items.findIndex(i => i === item);
if (index !== -1) {
this.items.splice(index, 1);
}
}
}
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of filteredItems">
{{ item }}
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
filteredItems: string[] = [];
removeItem(item: string) {
this.filteredItems = this.items.filter(i => i !== item);
}
}
spliceメソッドの代替:sliceメソッドと再代入
splice
メソッドの代わりに、slice
メソッドを使用して配列の特定の部分を抽出し、新しい配列を作成することができます。その後、新しい配列を元の配列に再代入します。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of items">
{{ item }}
<button (click)="removeItem(item)">Remove</button>
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
removeItem(item: string) {
const index = this.items.indexOf(item);
if (index !== -1) {
this.items = this.items.slice(0, index).concat(this.items.slice(index + 1));
}
}
}
filterメソッドの代替:reduceメソッド
filter
メソッドの代わりに、reduce
メソッドを使用して配列を新しい配列に縮小することができます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of filteredItems">
{{ item }}
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
filteredItems: string[] = [];
removeItem(item: string) {
this.filteredItems = this.items.reduce((acc, curr) => {
if (curr !== item) {
acc.push(curr);
}
return acc;
}, []);
}
}
forEachメソッドと新しい配列
forEach
メソッドを使用して配列の各要素をループし、新しい配列に除外したい要素を除いた要素を追加することができます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<ul>
<li *ngFor="let item of filteredItems">
{{ item }}
</li>
</ul>
`,
})
export class AppComponent {
items: string[] = ['item1', 'item2', 'item3'];
filteredItems: string[] = [];
removeItem(item: string) {
this.filteredItems = [];
this.items.forEach(i => {
if (i !== item) {
this.filteredItems.push(i);
}
});
}
}
javascript angular typescript