javascript - array definition



কিভাবে আমি জাভাস্ক্রিপ্ট একটি অ্যারে থেকে একটি নির্দিষ্ট উপাদান মুছে ফেলতে পারি? (20)

আমার পূর্ণসংখ্যার একটি অ্যারে আছে, এবং আমি এটি যোগ করার জন্য .push() পদ্ধতিটি ব্যবহার করছি।

একটি অ্যারের থেকে একটি নির্দিষ্ট উপাদান মুছে ফেলার জন্য একটি সহজ উপায় আছে? array.remove(int); মত কিছু সমতুল্য array.remove(int);

আমি কোর জাভাস্ক্রিপ্ট ব্যবহার করতে হবে - কোন কাঠামো অনুমতি দেওয়া হয়।

https://src-bin.com


Answer #1

2016 অক্টোবর এ সম্পাদিত

  • এটা সহজ, স্বজ্ঞাত এবং সুস্পষ্ট ( https://en.wikipedia.org/wiki/Occam%27s_razor )
  • এটি অপ্রয়োজনীয় (মূল অ্যারে অপরিবর্তিত থাকার)
  • যদি আপনার ব্রাউজার তাদের সমর্থন না করে তবে স্ট্যান্ডার্ড JS ফাংশন দিয়ে এটি করুন - পলিফিল ব্যবহার করুন

এই কোড উদাহরণে আমি অ্যারের থেকে অযাচিত আইটেমগুলি সরিয়ে ফেলতে "array.filter (...)" ফাংশন ব্যবহার করি, এই ফাংশনটি মূল অ্যারে পরিবর্তন করে এবং একটি নতুন তৈরি করে না। যদি আপনার ব্রাউজার এই ফাংশনটিকে সমর্থন করে না (যেমন সংস্করণ 9 এর আগে IE বা সংস্করণ 1.5 এর আগে ফায়ারফক্স), মোজিলা থেকে ফিল্টার পলিফিল ব্যবহার করার কথা বিবেচনা করুন।

আইটেম অপসারণ (ECMA-262 সংস্করণ 5 কোড উর্ধ্বতন oldstyle জেএস)

var value = 3

var arr = [1, 2, 3, 4, 5, 3]

arr = arr.filter(function(item) { 
    return item !== value
})

console.log(arr)
// [ 1, 2, 4, 5 ]

আইটেম অপসারণ (ES2015 কোড)

let value = 3

let arr = [1, 2, 3, 4, 5, 3]

arr = arr.filter(item => item !== value)

console.log(arr)
// [ 1, 2, 4, 5 ]

গুরুত্বপূর্ণ ES2015 "() => {}" তীর ফাংশন সিনট্যাক্স IE তে সবথেকে সমর্থিত নয়, 45 সংস্করণ আগে Chrome, 22 সংস্করণ আগে ফায়ারফক্স, 10 সংস্করণ আগে সাফারি। পুরানো ব্রাউজারগুলিতে ES2015 সিনট্যাক্স ব্যবহার করতে আপনি BabelJS ব্যবহার করতে পারেন

একাধিক আইটেম অপসারণ (ES2016 কোড)

এই পদ্ধতির একটি অতিরিক্ত সুবিধা আপনি একাধিক আইটেম অপসারণ করতে পারেন

let forDeletion = [2, 3, 5]

let arr = [1, 2, 3, 4, 5, 3]

arr = arr.filter(item => !forDeletion.includes(item))
// !!! Read below about array.includes(...) support !!!

console.log(arr)
// [ 1, 4 ]

গুরুত্বপূর্ণ "array.includes (...)" ফাংশনটি IE তে সমর্থিত নয়, 47 সংস্করণ আগে Chrome, 43 সংস্করণ আগে ফায়ারফক্স, 9 সংস্করণের আগে সাফারি এবং 14 সংস্করণে এজের আগে 14 টি সংস্করণ রয়েছে তাই এখানে মোজিলা থেকে পলিফিল

একাধিক আইটেম অপসারণ (কাটিং-প্রান্ত পরীক্ষামূলক জাভাস্ক্রিপ্ট ES2018?)

// array-lib.js

export function remove(...forDeletion) {
    return this.filter(item => !forDeletion.includes(item))
}

// main.js

import { remove } from './array-lib.js'

let arr = [1, 2, 3, 4, 5, 3]

// :: This-Binding Syntax Proposal
// using "remove" function as "virtual method"
// without extending Array.prototype
arr = arr::remove(2, 3, 5)

console.log(arr)
// [ 1, 4 ]

BabelJS এ নিজেকে চেষ্টা করুন :)

উল্লেখ


Answer #2

ES6 এবং পরিবর্তন ছাড়া: (অক্টোবর 2016)

const removeByIndex = (list, index) =>
  [
    ...list.slice(0, index),
    ...list.slice(index + 1)
  ];

তারপর:

removeByIndex([33,22,11,44],1) //=> [33,11,44]

Answer #3

আপনি ES6 ব্যবহার করতে পারেন।

var array=['1','2','3','4','5','6']
var index = array.filter((value)=>value!='3');

আউটপুট:

["1", "2", "4", "5", "6"]

Answer #4

আপনি lodash _.pull (mutate array), _.pullAt (mutate array) বা _.without (অ্যারে পরিবর্তন করতে পারবেন না) ব্যবহার করতে পারেন।

var array1 = ['a', 'b', 'c', 'd']
_.pull(array1, 'c')
console.log(array1) // ['a', 'b', 'd']

var array2 = ['e', 'f', 'g', 'h']
_.pullAt(array2, 0)
console.log(array2) // ['f', 'g', 'h']

var array3 = ['i', 'j', 'k', 'l']
var newArray = _.without(array3, 'i') // ['j', 'k', 'l']
console.log(array3) // ['i', 'j', 'k', 'l']

Answer #5

আপনি আপনার অ্যারের আপনার অ্যারে mutate করা উচিত নয়। এই কার্যকরী প্রোগ্রামিং প্যাটার্ন বিরুদ্ধে। আপনি যা করতে পারেন তা হল অ্যারে উল্লেখ না করে একটি নতুন অ্যারে তৈরি করুন যা আপনি এস 6 পদ্ধতির filter ব্যবহার করে ডেটা পরিবর্তন করতে চান;

var myArray = [1,2,3,4,5,6];

ধরুন আপনি অ্যারে থেকে 5 মুছে ফেলতে চান তবে আপনি কেবল এটির মতো এটি করতে পারেন।

myArray = myArray.filter(value => value !== 5);

এটি আপনি যে মূল্যটি সরাতে চেয়েছিলেন তার জন্য আপনাকে একটি নতুন অ্যারে দেবে। সুতরাং ফলাফল হতে হবে

 [1,2,3,4,6]; // 5 has been removed from this array

আরো বোঝার জন্য আপনি Array.filter এ MDN ডকুমেন্টেশনটি পড়তে পারেন filter


Answer #6

আপনি একটি খালি স্পট রাখা বা না চান উপর নির্ভর করে।

যদি আপনি একটি খালি স্লট চান, মুছে দিন জরিমানা:

delete array[ index ];

যদি আপনি না করেন, আপনি splice পদ্ধতি ব্যবহার করা উচিত:

array.splice( index, 1 );

এবং যদি আপনি সেই আইটেমের মানটির প্রয়োজন বোধ করেন, তবে আপনি কেবল ফেরত অ্যারের উপাদানটি সংরক্ষণ করতে পারেন:

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

যদি আপনি কোনও ক্রমে এটি করতে চান তবে আপনি array.pop() জন্য array.pop() কে শেষ বা array.shift() জন্য ব্যবহার করতে পারেন (এবং উভয় আইটেমটির array.shift() )।

এবং যদি আপনি আইটেমের সূচীটি জানেন না, তবে আপনি এটি পেতে একটি array.indexOf( item ) তে array.indexOf( item ) ব্যবহার করতে পারেন। array.indexOf( item ) যদি কোনও সূচী বা -1 পাওয়া না থাকে।


Answer #7

আমি আপনি 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];

Answer #8

আমি জাভাস্ক্রিপ্ট চমত্কার নতুন এবং এই কার্যকারিতা প্রয়োজন। আমি শুধু এই লিখেছি:

function removeFromArray(array, item, index) {
  while((index = array.indexOf(item)) > -1) {
    array.splice(index, 1);
  }
}

তারপর যখন আমি এটি ব্যবহার করতে চান:

//Set-up some dummy data
var dummyObj = {name:"meow"};
var dummyArray = [dummyObj, "item1", "item1", "item2"];

//Remove the dummy data
removeFromArray(dummyArray, dummyObj);
removeFromArray(dummyArray, "item2");

আউটপুট - হিসাবে প্রত্যাশিত। ["আইটেম 1", "আইটেম 1"]

আপনার কাছে আমার চেয়ে বিভিন্ন প্রয়োজন থাকতে পারে, তাই আপনি সহজেই এটির জন্য এটি সংশোধন করতে পারেন। আমি আশা করি এটা কারো সাহায্যে লাগবে.


Answer #9

এই কোড পরীক্ষা করে দেখুন। এটা প্রতিটি প্রধান ব্রাউজারে কাজ করে।

remove_item = function (arr, value) {
    var b = '';
    for (b in arr) {
        if (arr[b] === value) {
            arr.splice(b, 1);
            break;
        }
    }
    return arr;
}

এই ফাংশন কল

remove_item(array,value);

Answer #10

জন রেসিগ একটি ভাল বাস্তবায়ন পোস্ট করেছেন :

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

আপনি যদি কোনও গ্লোবাল অবজেক্ট প্রসারিত করতে না চান তবে আপনি নীচের মতো কিছু করতে পারেন, পরিবর্তে:

// Array Remove - By John Resig (MIT Licensed)
Array.remove = function(array, from, to) {
    var rest = array.slice((to || from) + 1 || array.length);
    array.length = from < 0 ? array.length + from : from;
    return array.push.apply(array, rest);
};

তবে আমি এই পোস্টটি পোস্ট করার মূল কারণ হল সেই পৃষ্ঠাটির মন্তব্যগুলিতে প্রস্তাবিত বিকল্প বাস্তবায়নের বিরুদ্ধে ব্যবহারকারীদের সতর্ক করা (ডিসেম্বর 14, 2007):

Array.prototype.remove = function(from, to){
  this.splice(from, (to=[0,from||1,++to-from][arguments.length])<0?this.length+to:to);
  return this.length;
};

এটি প্রথমে ভালভাবে কাজ করে বলে মনে হচ্ছে, তবে একটি বেদনাদায়ক প্রক্রিয়ার মাধ্যমে আমি এটি অ্যারেতে শেষ উপাদান থেকে দ্বিতীয়টি সরানোর চেষ্টা করার সময় ব্যর্থ হয়েছি। উদাহরণস্বরূপ, যদি আপনার একটি 10-উপাদান অ্যারে থাকে এবং আপনি এটির সাথে 9 ম উপাদানটি সরাতে চেষ্টা করেন:

myArray.remove(8);

আপনি একটি 8-উপাদান অ্যারের সাথে শেষ। জানি না কেন তবে আমি জন এর বাস্তব বাস্তবায়ন নিশ্চিত এই সমস্যা নেই।


Answer #11

যদি আপনি মুছে ফেলা অবস্থানগুলি মুছে ফেলার সাথে একটি নতুন অ্যারে চান তবে আপনি সর্বদা নির্দিষ্ট উপাদান মুছে ফেলতে এবং অ্যারে ফিল্টার করতে পারেন। এটি ব্রাউজারগুলির জন্য অ্যারের বস্তুর একটি এক্সটেনশান প্রয়োজন হতে পারে যা ফিল্টার পদ্ধতি বাস্তবায়ন করে না তবে দীর্ঘমেয়াদীতে এটি যা করা আপনার পক্ষে সহজ, তা হল:

var my_array = [1,2,3,4,5,6];
delete my_array[4];
console.log(my_array.filter(function(a){return typeof a !== 'undefined';}));

প্রদর্শন করা উচিত [1, 2, 3, 4, 6]


Answer #12

Internet Explorer 8 তে একটি বন্ধুর সমস্যা ছিল, এবং সে যা করেছে তা আমাকে দেখিয়েছিল। আমি তাকে বলেছিলাম এটা ভুল ছিল, এবং তিনি আমাকে বলেছিলেন যে তিনি এখানে উত্তর পেয়েছেন। বর্তমান শীর্ষ উত্তর সকল ব্রাউজারে কাজ করবে না (উদাহরণস্বরূপ ইন্টারনেট এক্সপ্লোরার 8), এবং এটি কেবলমাত্র আইটেমটির প্রথম ঘটনাটি সরিয়ে দেবে।

একটি অ্যারের থেকে সব ঘটনা মুছে ফেলুন

function remove(arr, item) {
    for (var i = arr.length; i--;) {
        if (arr[i] === item) {
            arr.splice(i, 1);
        }
    }
}

এটি অ্যারের পশ্চাদ্দেশের মধ্য দিয়ে loops (আইটেমগুলি সরানো হয় হিসাবে সূচক এবং দৈর্ঘ্য পরিবর্তিত হবে) এবং এটি খুঁজে পাওয়া আইটেমটি মুছে ফেলা হয়। এটা সব ব্রাউজারে কাজ করে।


Answer #13

indexOf বা splice ব্যবহার করার প্রয়োজন নেই। যাইহোক, যদি আপনি শুধুমাত্র একটি উপাদান একটি ঘটনার অপসারণ করতে চান ভাল সঞ্চালন।

খুঁজুন এবং সরান (স্থানান্তর):

function move(arr, val) {
  var j = 0;
  for (var i = 0, l = arr.length; i < l; i++) {
    if (arr[i] !== val) {
      arr[j++] = arr[i];
    }
  }
  arr.length = j;
}

IndexOf এবং splice (indexof) ব্যবহার করুন:

function indexof(arr, val) {
  var i;
  while ((i = arr.indexOf(val)) != -1) {
    arr.splice(i, 1);
  }
}

শুধুমাত্র splice (splice) ব্যবহার করুন:

function splice(arr, val) {
  for (var i = arr.length; i--;) {
    if (arr[i] === val) {
      arr.splice(i, 1);
    }
  }
}

1000 উপাদানগুলির সাথে অ্যারের জন্য নোডজেস-এ রান-বার (10000 রান বেশি):

indexof সরানো চেয়ে প্রায় 10x ধীর। এমনকি যদি indexOf কলটি সরানোর মাধ্যমে উন্নত করা হয় তবে এটি সরানো থেকে অনেক খারাপ সঞ্চালিত হয়।

Remove all occurrences:
    move 0.0048 ms
    indexof 0.0463 ms
    splice 0.0359 ms

Remove first occurrence:
    move_one 0.0041 ms
    indexof_one 0.0021 ms

Answer #14

আপডেট: আপনি যদি ECMAScript 2015 (পূর্বে ES6 নামে পরিচিত) ব্যবহার করতে না পারেন তবে এই পদ্ধতিটি সুপারিশ করা হয়। আপনি এটি ব্যবহার করতে পারেন, এখানে অন্যান্য উত্তর অনেক নিরপেক্ষ বাস্তবায়ন প্রদান।

এখানে এই সমস্যাটি আপনার সমস্যার সমাধান করবে, এবং শুধুমাত্র 1 (বা একটি নির্দিষ্ট মান) পরিবর্তে যুক্তিটির সমস্ত ঘটনা মুছে ফেলবে।

Array.prototype.destroy = function(obj){
    // Return null if no objects were found and removed
    var destroyed = null;

    for(var i = 0; i < this.length; i++){

        // Use while-loop to find adjacent equal objects
        while(this[i] === obj){

            // Remove this[i] and store it within destroyed
            destroyed = this.splice(i, 1)[0];
        }
    }

    return destroyed;
}

ব্যবহার:

var x = [1, 2, 3, 3, true, false, undefined, false];

x.destroy(3);         // => 3
x.destroy(false);     // => false
x;                    // => [1, 2, true, undefined]

x.destroy(true);      // => true
x.destroy(undefined); // => undefined
x;                    // => [1, 2]

x.destroy(3);         // => null
x;                    // => [1, 2]

Answer #15

আপনার 1 থেকে 9 অ্যারের আছে এবং আপনি নীচের কোড ব্যবহার 5 মুছে ফেলতে চান।

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];

var newNumberArray = numberArray.filter(m => {
  return m !== 5;
});

console.log("new Array, 5 removed", newNumberArray);

যদি আপনি একাধিক মান প্রাক্তন করতে চান: - 1,7,8

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];

var newNumberArray = numberArray.filter(m => {
  return (m !== 1) && (m !== 7) && (m !== 8);
});

console.log("new Array, 5 removed", newNumberArray);

যদি আপনি অ্যারের মধ্যে অ্যারে মান অপসারণ করতে চান প্রাক্তন: - [3,4,5]

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var removebleArray = [3,4,5];

var newNumberArray = numberArray.filter(m => {
    return !removebleArray.includes(m);
});

console.log("new Array, [3,4,5] removed", newNumberArray);

সমর্থিত ব্রাউজার link


Answer #16

একটি অ্যারে থেকে অপসারণ করার জন্য আমার আরেকটি ভাল সমাধান আছে:

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

filter


Answer #17

সমস্ত উত্তরগুলির উপর ভিত্তি করে যা মূলত সঠিক এবং বিবেচ্য সর্বোত্তম অনুশীলনের পরামর্শ দেওয়া হয়েছে (বিশেষত Array.prototype ব্যবহার করে না), আমি নিচের কোডটি দিয়ে এসেছি:

function arrayWithout(arr, values) {
  var isArray = function(canBeArray) {
    if (Array.isArray) {
      return Array.isArray(canBeArray);
    }
    return Object.prototype.toString.call(canBeArray) === '[object Array]';
  };

  var excludedValues = (isArray(values)) ? values : [].slice.call(arguments, 1);
  var arrCopy = arr.slice(0);

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

  return arrCopy;
}

উপরের কাজটি পর্যালোচনা করার পরেও এটি সূক্ষ্ম কাজ করে, আমি বুঝতে পারছি কিছু কার্যকারিতা উন্নতি হতে পারে। এছাড়াও ES5 এর পরিবর্তে ES6 ব্যবহার করা অনেক ভাল পদ্ধতি। যে শেষ, এই উন্নত কোড:

const arrayWithoutFastest = (() => {
  const isArray = canBeArray => ('isArray' in Array) 
    ? Array.isArray(canBeArray) 
    : Object.prototype.toString.call(canBeArray) === '[object Array]';

  let mapIncludes = (map, key) => map.has(key);
  let objectIncludes = (obj, key) => key in obj;
  let includes;

  function arrayWithoutFastest(arr, ...thisArgs) {
    let withoutValues = isArray(thisArgs[0]) ? thisArgs[0] : thisArgs;

    if (typeof Map !== 'undefined') {
      withoutValues = withoutValues.reduce((map, value) => map.set(value, value), new Map());
      includes = mapIncludes;
    } else {
      withoutValues = withoutValues.reduce((map, value) => { map[value] = value; return map; } , {}); 
      includes = objectIncludes;
    }

    const arrCopy = [];
    const length = arr.length;

    for (let i = 0; i < length; i++) {
      // If value is not in exclude list
      if (!includes(withoutValues, arr[i])) {
        arrCopy.push(arr[i]);
      }
    }

    return arrCopy;
  }

  return arrayWithoutFastest;  
})();

ব্যবহারবিধি:

const arr = [1,2,3,4,5,"name", false];

arrayWithoutFastest(arr, 1); // will return array [2,3,4,5,"name", false]
arrayWithoutFastest(arr, 'name'); // will return [2,3,4,5, false]
arrayWithoutFastest(arr, false); // will return [2,3,4,5]
arrayWithoutFastest(arr,[1,2]); // will return [3,4,5,"name", false];
arrayWithoutFastest(arr, {bar: "foo"}); // will return the same array (new copy)

আমি বর্তমানে একটি ব্লগ পোস্ট লিখছি যার মধ্যে আমি কোন সমস্যা ছাড়াই অ্যারের জন্য কয়েকটি সমাধান বেঞ্চমার্ক করেছি এবং এটি চালানোর সময়টি তুলনা করে। আমি এই পোস্টটি শেষ করার পরে লিঙ্কটি দিয়ে এই আপডেটটি আপডেট করব। শুধু আপনাকে জানাতে, আমি লাউডস এর বিরুদ্ধে উপরে তুলনা করেছি এবং ব্রাউজার সমর্থন করলে Map, এটি লোডশে! লক্ষ্য করুন যে আমি ব্যবহার করছি না Array.prototype.indexOfঅথবা Array.prototype.includesexlcude ভ্যালুগুলিকে মোড়ানো Mapঅথবা Objectদ্রুত অনুসন্ধানের জন্য তৈরি করছি! ( https://jsperf.com/array-without-benchmark-against-lodash )


Answer #18

জাভাস্ক্রিপ্ট ব্যবহার করে একটি অ্যারের থেকে একটি আইটেম মুছে ফেলার জন্য এখানে কয়েকটি উপায় ।

বর্ণিত সমস্ত পদ্ধতি মূল অ্যারেটি পরিবর্তন করে না এবং পরিবর্তে একটি নতুন তৈরি করে।

যদি আপনি একটি আইটেম সূচী জানেন

ধরুন আপনার একটি অ্যারের আছে এবং আপনি অবস্থানের মধ্যে একটি আইটেম সরাতে চান i

এক পদ্ধতি ব্যবহার করা হয় slice():

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const i = 3
const filteredItems = items.slice(0, i-1).concat(items.slice(i, items.length))

console.log(filteredItems)

slice()এটি প্রাপ্ত সূচী সঙ্গে একটি নতুন অ্যারে তৈরি করে। আমরা কেবল একটি নতুন অ্যারে তৈরি করি, শুরু থেকে সূচী থেকে আমরা সরাতে চাই, এবং অ্যারের শেষে আমরা যেটিকে সরিয়ে দিয়েছি তার পরে প্রথম অবস্থান থেকে অন্য অ্যারেকে সংহত করে।

আপনি মান জানেন

এই ক্ষেত্রে, একটি ভাল বিকল্প ব্যবহার করা হয় filter(), যা আরো ঘোষণামূলক পদ্ধতির প্রস্তাব করে:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valueToRemove = 'c'
const filteredItems = items.filter(item => item !== valueToRemove)

console.log(filteredItems)

এই ES6 তীর ফাংশন ব্যবহার করে। আপনি পুরানো ব্রাউজার সমর্থন করার জন্য ঐতিহ্যগত ফাংশন ব্যবহার করতে পারেন:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valueToRemove = 'c'
const filteredItems = items.filter(function(item) {
  return item !== valueToRemove
})

console.log(filteredItems)

অথবা আপনি বাবেল ব্যবহার করতে পারেন এবং ইএস 6 কোডটিকে ES5 এ ফিরে পুরানো ব্রাউজারে আরও পছন্দের করতে পারেন, তবে আপনার কোডে আধুনিক জাভাস্ক্রিপ্ট লিখুন।

একাধিক আইটেম অপসারণ করা হচ্ছে

যদি কোন একক আইটেমের পরিবর্তে, আপনি অনেক আইটেম সরাতে চান?

আসুন সহজ সমাধান খুঁজে পেতে।

সূচক দ্বারা

আপনি কেবল একটি ফাংশন তৈরি করতে এবং সিরিজের আইটেমগুলি সরাতে পারেন:

const items = ['a', 'b', 'c', 'd', 'e', 'f']

const removeItem = (items, i) =>
  items.slice(0, i-1).concat(items.slice(i, items.length))

let filteredItems = removeItem(items, 3)
filteredItems = removeItem(filteredItems, 5)
//["a", "b", "c", "d"]

console.log(filteredItems)

মূল্য দ্বারা

আপনি কলব্যাক ফাংশন ভিতরে অন্তর্ভুক্তির জন্য অনুসন্ধান করতে পারেন:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valuesToRemove = ['c', 'd']
const filteredItems = items.filter(item => !valuesToRemove.includes(item))
// ["a", "b", "e", "f"]

console.log(filteredItems)

মূল অ্যারে mutating এড়ানো

splice()(সঙ্গে বিভ্রান্ত করা হবে না slice()) মূল অ্যারে mutates, এবং এড়ানো উচিত।

(মূলত পোস্ট করেছেন https://flaviocopes.com/how-to-remove-item-from-array/ )


Answer #19

একটি আরো আধুনিক, ECMAScript 2015 (পূর্বে Harmony বা ES 6 হিসাবে পরিচিত) পদ্ধতির। প্রদত্ত:

const items = [1, 2, 3, 4];
const index = 2;

তারপর:

items.filter((x, i) => i !== index);

ফলনশীল:

[1, 2, 4]

এটি ব্রাউজার জুড়ে ভাল সমর্থিত তা নিশ্চিত করতে আপনি Babel এবং একটি পলিফিল পরিষেবা ব্যবহার করতে পারেন ।


Answer #20
  Array.prototype.removeItem = function(a) {
            for (i = 0; i < this.length; i++) {
                if (this[i] == a) {
                    for (i2 = i; i2 < this.length - 1; i2++) {
                        this[i2] = this[i2 + 1];
                    }
                    this.length = this.length - 1
                    return;
                }
            }
        }

    var recentMovies = ['Iron Man', 'Batman', 'Superman', 'Spiderman'];
    recentMovies.removeItem('Superman');





arrays