چطور میتونم یه مقدار خاص رو از یه آرایه حذف کنم؟ چیزی شبیه به این:
array.remove(value);
محدودیتها: باید از جاوااسکریپت اصلی استفاده کنم. استفاده از فریمورکها مجاز نیست.
برای پیدا کردن ایندکس آیتمی که میخواهید حذف کنید، از indexOf استفاده کنید و سپس با splice اون ایندکس رو حذف کنید.
متد splice() محتویات یک آرایه را با حذف عناصر موجود و یا اضافه کردن عناصر جدید تغییر میدهد.
const array = [2, 5, 9];
console.log(array);
const index = array.indexOf(5);
if (index > -1) {
array.splice(index, 1);
}
// array = [2, 9]
console.log(array);
پارامتر دوم متد splice تعداد عناصری است که باید حذف شوند. توجه داشته باشید که splice آرایه را بهطور مستقیم تغییر میدهد و یک آرایه جدید شامل عناصری که حذف شدهاند را برمیگرداند.
برای کامل بودن، در اینجا توابعی ارائه شده است. تابع اول فقط یک بار (یعنی اولین بار) ۵ را از [2, 5, 9, 1, 5, 8, 5] حذف میکند، در حالی که تابع دوم تمام موارد ۵ را حذف میکند:
function removeItemOnce(arr, value) {
var index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}
function removeItemAll(arr, value) {
var i = 0;
while (i < arr.length) {
if (arr[i] === value) {
arr.splice(i, 1);
} else {
++i;
}
}
return arr;
}
console.log(removeItemOnce([2,5,9,1,5,8,5], 5))
console.log(removeItemAll([2,5,9,1,5,8,5], 5))
در TypeScript، این توابع میتوانند با استفاده از type parameter بهطور type-safe باقی بمانند:
function removeItem<T>(arr: Array<T>, value: T): Array<T> { const index = arr.indexOf(value); if (index > -1) { arr.splice(index, 1); } return arr; }