21
0

چطور می‌تونم یه مقدار خاص رو از یه آرایه حذف کنم؟ چیزی شبیه به این:

 

array.remove(value);

 

محدودیت‌ها: باید از جاوااسکریپت اصلی استفاده کنم. استفاده از فریم‌ورک‌ها مجاز نیست.

0
پاسخ کاربردی

برای پیدا کردن ایندکس آیتمی که می‌خواهید حذف کنید، از 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 باقی بمانند:

  1. function removeItem<T>(arr: Array<T>, value: T): Array<T> { 
      const index = arr.indexOf(value);
      if (index > -1) {
        arr.splice(index, 1);
      }
      return arr;
    }

 

ارسال پاسخ به سوال بالا

برای ارسال پاسخ باید وارد اکانتت بشی

اگر پاسخت شامل تکه کدی میشه، از منوی ویرایشگر پایین، تکه کدی که نوشتی رو انتخاب کن و بعد از طریق زبان کدی که نوشتی رو انتخاب کن تا کدت داخل بلاک مخصوص زبان خودش قرار بگیره و کدت خواناتر برای بقیه نشون داده بشه

اگه پاسخت رفرنسی داره، لینک رفرنس رو هم بذار تا پاسختت کاملتر و معتبر تر بشه