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




array in java (24)

আপনার 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

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

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

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


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

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

আউটপুট:

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

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)


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

সমস্ত উত্তরগুলির উপর ভিত্তি করে যা মূলত সঠিক এবং বিবেচ্য সর্বোত্তম অনুশীলনের পরামর্শ দেওয়া হয়েছে (বিশেষত 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 )


আপনি অ্যারে জটিল বস্তু আছে যদি আপনি ফিল্টার ব্যবহার করতে পারেন? যেখানে $ .inArray বা array.splice ব্যবহার করা সহজ নয়। বস্তু সম্ভবত অ্যারের মধ্যে অগভীর হয়।

যেমন যদি আপনার আইডি ক্ষেত্রের সাথে একটি বস্তু থাকে এবং আপনি অ্যারের থেকে বস্তুটি সরাতে চান:

this.array = this.array.filter(function(element, i) {
    return element.id !== idToRemove;
});

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

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

তারপর:

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

আপনি সরিয়ে ফেলতে চান এমন অ্যারের উপাদানটির index খুঁজুন, তারপর সেই splice সহ সরান।

Splice () পদ্ধতিটি বিদ্যমান উপাদানগুলি সরাতে এবং / অথবা নতুন উপাদান যোগ করে একটি অ্যারের বিষয়বস্তু পরিবর্তন করে।

var array = [2, 5, 9];
console.log(array)
var index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1);
}
// array = [2, 9]
console.log(array);

splice দ্বিতীয় পরামিতি উপাদান অপসারণের সংখ্যা। দ্রষ্টব্য যে splice জায়গায় অ্যারে সংশোধন করে এবং সরানো হয়েছে এমন উপাদান ধারণকারী একটি নতুন অ্যারে প্রদান করে।

দ্রষ্টব্য : indexOf জন্য ব্রাউজার সমর্থন সীমিত; এটি ইন্টারনেট এক্সপ্লোরার 7 এবং 8 তে সমর্থিত নয়।

যদি আপনি একটি অসমর্থিত ব্রাউজারে polyfill তবে নিম্নোক্ত polyfill চেষ্টা করুন। এখানে এই polyfill সম্পর্কে আরও তথ্য খুঁজুন।

Array.prototype.indexOf || (Array.prototype.indexOf = function(d, e) {
    var a;
    if (null == this) throw new TypeError('"this" is null or not defined');
    var c = Object(this),
        b = c.length >>> 0;
    if (0 === b) return -1;
    a = +e || 0;
    Infinity === Math.abs(a) && (a = 0);
    if (a >= b) return -1;
    for (a = Math.max(0 <= a ? a : b - Math.abs(a), 0); a < b;) {
        if (a in c && c[a] === d) return a;
        a++
    }
    return -1
});

Underscore.js একাধিক ব্রাউজার সঙ্গে সমস্যা সমাধানের জন্য ব্যবহার করা যেতে পারে। উপস্থিত থাকলে এটি বিল্ড ব্রাউজার পদ্ধতি ব্যবহার করে। যদি তারা পুরোনো ইন্টারনেট এক্সপ্লোরার সংস্করণের ক্ষেত্রে অনুপস্থিত থাকে তবে এটি নিজস্ব কাস্টম পদ্ধতি ব্যবহার করে।

অ্যারের থেকে উপাদানগুলি সরানোর জন্য একটি সহজ উদাহরণ (ওয়েবসাইট থেকে):

_.without([1, 2, 1, 0, 3, 1, 4], 0, 1); // => [2, 3, 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']

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

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"]

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


ঠিক আছে, উদাহরণস্বরূপ আপনি নীচের অ্যারে হচ্ছে:

var num = [1, 2, 3, 4, 5];

এবং আমরা নম্বর 4 মুছে ফেলতে চাই, আপনি কেবল নীচের কোডটি করতে পারেন:

num.splice(num.indexOf(4), 1); //num will be [1, 2, 3, 5];

আপনি যদি এই ফাংশনটি পুনঃব্যবহার করেন, তবে আপনি পুনঃব্যবহারযোগ্য ফাংশন লিখুন যা নীচের অ্যারে ফাংশনে সংযুক্ত হবে:

Array.prototype.remove = Array.prototype.remove || function(x) {
  const i = this.indexOf(x);
  if(i===-1) return;
  this.splice(i, 1); //num.remove(5) === [1, 2, 3];
}

কিন্তু আরেতে কয়েকটি [5] গুলি এর পরিবর্তে নীচের অ্যারে থাকলে কীভাবে?

var num = [5, 6, 5, 4, 5, 1, 5];

আমাদের সকলকে পরীক্ষা করার জন্য আমাদের একটি লুপ দরকার, তবে সহজ এবং আরও কার্যকর উপায় অন্তর্নির্মিত জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করা হচ্ছে, তাই আমরা এমন একটি ফাংশন লিখি যা এর পরিবর্তে নীচের মত ফিল্টার ব্যবহার করে:

const _removeValue = (arr, x) => arr.filter(n => n!==x);
//_removeValue([1, 2, 3, 4, 5, 5, 6, 5], 5) //return [1, 2, 3, 4, 6]

এছাড়াও তৃতীয় পক্ষের লাইব্রেরিগুলি রয়েছে যা লোডশ বা আন্ডারস্কোরের মতো এটি করতে আপনাকে সাহায্য করে, আরো তথ্যের জন্য lodash _.pull, _.pullAt_ _without।


আপডেট: আপনি যদি 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]

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

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


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

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

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

ধরুন আপনার একটি অ্যারের আছে এবং আপনি অবস্থানের মধ্যে একটি আইটেম সরাতে চান 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/ )


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

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

তারপর:

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

ফলনশীল:

[1, 2, 4]

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


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

আমি ইতিমধ্যে উত্তর অনেক আছে জানেন, কিন্তু তাদের অনেকেই সমস্যা জটিল জটিল বলে মনে হচ্ছে। এখানে একটি কী এর সব উদাহরণ সরানোর একটি সহজ, পুনরাবৃত্তিমূলক উপায় - সূচী পর্যন্ত স্বয়ং কল পাওয়া যায় না। হ্যাঁ, এটি শুধুমাত্র ব্রাউজারগুলিতে কাজ করে indexOfতবে এটি সহজ এবং সহজে পলিফিল করা যায়।

একা একা ফাংশন

function removeAll(array, key){
    var index = array.indexOf(key);

    if(index === -1) return;

    array.splice(index, 1);
    removeAll(array,key);
}

প্রোটোটাইপ পদ্ধতি

Array.prototype.removeAll = function(key){
    var index = this.indexOf(key);

    if(index === -1) return;

    this.splice(index, 1);
    this.removeAll(key);
}

দুটি প্রধান পদ্ধতি রয়েছে:

  1. splice () : anArray.splice(index, 1);

  2. মুছে ফেলুন : delete anArray[index];

আপনি একটি অ্যারের জন্য মুছে ফেলার সময় ব্যবহার করার সময় সতর্কতা অবলম্বন করা আবশ্যক। এটি বস্তুর গুণাবলী মুছে ফেলার জন্য ভাল তবে অ্যারের জন্য ভাল নয়। এটি অ্যারে জন্য splice ব্যবহার করা ভাল।

মনে রাখবেন যে যখন আপনি কোন অ্যারের জন্য delete anArray.length তখন আপনি anArray.length জন্য ভুল ফলাফল পেতে anArray.length । অন্য কথায়, delete ফেলুন উপাদান delete ফেলবে কিন্তু দৈর্ঘ্য সম্পত্তির মান আপডেট করবে না।

আপনি ডিল ব্যবহার করার পরে সূচক সংখ্যাগুলিতে গর্ত থাকতে পারে বলে আশা করতে পারেন, উদাহরণস্বরূপ আপনি সূচী 1,3,4,8,9,11 থাকা এবং এটি মুছে ফেলার আগে এটির দৈর্ঘ্য হিসাবে শেষ হতে পারে। যে ক্ষেত্রে, loops for সূচী সমস্ত ক্র্যাশ হবে, যেহেতু সূচী আর ক্রমিক।

আপনি যদি কিছু কারণে delete ব্যবহার করতে বাধ্য হন, তবে আপনাকে for each লুপগুলির for each ব্যবহার করা উচিত যখন আপনি অ্যারেগুলির মাধ্যমে লুপ করতে হবে। আসলে, সর্বদা সম্ভব হলে, loops জন্য সূচী ব্যবহার করে এড়াতে। এইভাবে কোডটি আরো জোরালো এবং সূচীগুলির সাথে সমস্যাগুলির কম প্রবণ হতে পারে।


যদি উপাদানটির একাধিক উদাহরণ থাকে তবে সূচীগুলিকে স্ক্রু না করা নিশ্চিত করতে আপনি একটি পশ্চাদপট লুপ করতে পারেন।

var myElement = "chocolate";
var myArray = ['chocolate', 'poptart', 'poptart', 'poptart', 'chocolate', 'poptart', 'poptart', 'chocolate'];

/* Important code */
for (var i = myArray.length - 1; i >= 0; i--) {
    if (myArray[i] == myElement) myArray.splice(i, 1);
}

জীবন্ত উদাহরণ


আপনি আপনার অ্যারের আপনার অ্যারে 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


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

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

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

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


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

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

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 পাওয়া না থাকে।


  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