Saya memiliki array yang saya buat di TypeScript dan memiliki properti yang saya gunakan sebagai kunci. Jika saya memiliki kunci itu, bagaimana saya bisa menghapus item dari itu?
Saya memiliki array yang saya buat di TypeScript dan memiliki properti yang saya gunakan sebagai kunci. Jika saya memiliki kunci itu, bagaimana saya bisa menghapus item dari itu?
Jawaban:
Cara yang sama seperti yang Anda lakukan dalam JavaScript.
delete myArray[key];
Perhatikan bahwa ini menyetel elemen ke undefined
.
Lebih baik menggunakan Array.prototype.splice
fungsi:
const index = myArray.indexOf(key, 0);
if (index > -1) {
myArray.splice(index, 1);
}
indexOf
pengembalian a number
?
index
lebih dari sekali tempat dan salah satu tempat itu ( splice
) ingin melihat nomor atau Anda akan mendapatkan kesalahan. Saat ini kompiler tidak dapat mencegah Anda membuat kesalahan di sana.
var index = myArray.findIndex(x => x.prop==key.prop);
.
delete myArr[2]
secara harfiah menghapus properti 2
dari myArr
, yang juga berbeda dari myArr[2] = undefined
. Moral dari cerita ini adalah hanya digunakan splice
untuk tugas ini karena ini adalah cara yang aman untuk mendapatkan efek yang diinginkan tanpa efek samping yang membingungkan.
Jika array adalah tipe objek, maka cara paling sederhana adalah
let foo_object // Item to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object)[0];
deleteById(id: string) { this.data = this.data.filter(d => d.id !== id); }
Hanya satu kata peringatan, jika Id tidak unik Anda akan menghapus semua dengan yang samaid
Dengan ES6 Anda dapat menggunakan kode ini:
removeDocument(doc){
this.documents.forEach( (item, index) => {
if(item === doc) this.documents.splice(index,1);
});
}
Ini solusi saya untuk itu:
onDelete(id: number) {
this.service.delete(id).then(() => {
let index = this.documents.findIndex(d => d.id === id); //find index in your array
this.documents.splice(index, 1);//remove element from array
});
event.stopPropagation();
}
Anda bisa menggunakan splice
metode pada array untuk menghapus elemen.
misalnya jika Anda memiliki array dengan nama, arr
gunakan yang berikut ini:
arr.splice(2, 1);
jadi di sini elemen dengan indeks 2 akan menjadi titik awal dan argumen 2 akan menentukan berapa banyak elemen yang akan dihapus.
Jika Anda ingin menghapus elemen terakhir dari array bernama arr
lakukan ini:
arr.splice(arr.length-1, 1);
Ini akan mengembalikan arr dengan elemen terakhir dihapus.
Contoh:
var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length-1, 1)
console.log(arr); // return ["orange", "mango", "banana", "sugar"]
biarkan departemen adalah sebuah array. Anda ingin menghapus item dari array ini.
departments: string[] = [];
removeDepartment(name: string): void {
this.departments = this.departments.filter(item => item != name);
}
Berikut ini adalah satu liner sederhana untuk menghapus objek dengan properti dari array objek.
delete this.items[this.items.findIndex(item => item.item_id == item_id)];
atau
this.items = this.items.filter(item => item.item_id !== item.item_id);
Jawab menggunakan operator penyebaran TypeScript (...)
// Your key
const key = 'two';
// Your array
const arr = [
'one',
'two',
'three'
];
// Get either the index or -1
const index = arr.indexOf(key); // returns 0
// Despite a real index, or -1, use spread operator and Array.prototype.slice()
const newArray = (index > -1) ? [
...arr.slice(0, index),
...arr.slice(index + 1)
] : arr;
Satu lagi solusi menggunakan TypeScript:
let updatedArray = [];
for (let el of this.oldArray) {
if (el !== elementToRemove) {
updated.push(el);
}
}
this.oldArray = updated;
Gunakan ini, jika Anda perlu menghapus objek yang diberikan dari array dan Anda ingin memastikan hal berikut:
const objWithIdToRemove;
const objIndex = this.objectsArray.findIndex(obj => obj.id === objWithIdToRemove);
if (objIndex > -1) {
this.objectsArray.splice(objIndex, 1);
}
var index: number = myArray.indexOf(key, 0);