چگونه می توانم آیتم مشخصی را از یک آرایه در جاوا اسکریپت حذف کنم؟

  • آخرین بروزرسانی پرسش در کاپ کد در چهارشنبه 25 مارس 2020

من آرایه ای از اعداد دارم و از متد .push()برای اضافه کردن المنت ها به این آرایه استفاده می کنم.

آیا راه ساده ای برای حذف المنت مشخصی از یک آرایه وجود داره؟

چیزی مثل این –

array.remove(number);

من باید از خود جاوا اسکریپت برای این کار استفاده کنم و مجاز به استفاده از فریمورک ها نیستم.

پرسش 🔝امتیازی
تعداد بازدید6428403
امتیاز8006👍
رای8018👍
📅 پرسش در
📅 آخرین ویرایش

برای این پرسش 4 پاسخ وجود دارد

4

اول index المنتی از آرایه رو که میخوای حذف کنی با استفاده از 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 همونجا آرایه اصلی رو تغییر میده و آرایه جدیدی رو هم بر میگردونه که شامل المنت هایی هست که حذف شدن.

امتیاز11461👍

پاسخ تایید شده
📅 پاسخ در
📅 آخرین ویرایش
Array.prototype.remByVal = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === val) {
            this.splice(i, 1);
            i--;
        }
    }
    return this;
}
//Call like
[1, 2, 3, 4].remByVal(3);
Array.prototype.remByVal = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === val) {
            this.splice(i, 1);
            i--;
        }
    }
    return this;
}

var rooms = ['hello', 'something']

rooms = rooms.remByVal('hello')

console.log(rooms)

امتیاز141👍

📅 پاسخ در
📅 آخرین ویرایش

نمیدونم انتظار داری رفتار array.remove(int) چطوری باشه. می تونم در نظر بگیرم که سه احتمال وجود داره که

بخوای یک المنت رو از یک آرایه در ایندکس i حذف کنی:

array.splice(i, 1);

اگر بخوای هر المنتی رو با مقدارnumber (عددی) از آرایه حذف کنی:

for(var i = array.length - 1; i >= 0; i--) {
    if(array[i] === number) {
        array.splice(i, 1);
    }
}

اگر فقط بخوای که المنتی ایندکس i دیگه وجود نداشته باشه اما نمیخوای که ایندکس بقیه المنت ها هم تغییر کنه:

delete array[i];

امتیاز1215👍

📅 پاسخ در
📅 آخرین ویرایش

بستگی به این داره که آیا میخوای اون نقطه ای که حذف میشه خالی بمونه یا نه.

اگر میخوای اون قسمت از آرایه خالی بمونه، دیلیت کافیه:

delete array[index];

اگر نمیخوای، باید از متد splice استفاده کنی:

array.splice(index, 1);

و اگر هم مقدار اون آیتم رو میخوای، می تونی المنت آرایه ای رو که برگشت داده شده رو در جایی ذخیره کنی:

var value = array.splice(index, 1)[0];

در حالتی هم که بخوای به یک روش دیگه انجام بدی، میتونی از array.pop() برای آخری و از array.shift()برای اولی استفاده کنی (و هر دو هم مقدار آیتم حذف شده رو بر میگردونن)

و اگر هم ایندکس آیتم مورد نظر رو نمیدونی، میتونی از array.indexOf(item)برای بدست آوردنش استفاده کنی (برای بدست آوردن یک آیتم در if() و برای همه اون ها در while()). array.indexOf(item)ایندکس و اگر هم پیدا نشه -1 بر میگردونه

امتیاز440👍

📅 پاسخ در
📅 آخرین ویرایش
برای دنبال کردن نوشته های کاپ کد به کانال تلگرامی آن (cupcode_ir@) بپیوندید!
guest
0 دیدگاه ها
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
0
افکار شما را دوست داریم، لطفا نظر دهید.x