من آرایه ای از اعداد دارم و از متد .push()
برای اضافه کردن المنت ها به این آرایه استفاده می کنم.
آیا راه ساده ای برای حذف المنت مشخصی از یک آرایه وجود داره؟
چیزی مثل این –
array.remove(number);
من باید از خود جاوا اسکریپت برای این کار استفاده کنم و مجاز به استفاده از فریمورک ها نیستم.
برای این پرسش 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👍