javascript मैं जावास्क्रिप्ट के साथ किसी सरणी से ऑब्जेक्ट को कैसे हटा सकता हूं?




arrays object (11)

splice() विधि का प्रयोग करें।

(कम से कम मुझे लगता है कि यह जवाब है, आप कहते हैं कि आपके पास एक वस्तु है , लेकिन जो कोड आप देते हैं वह केवल दो चर बनाता है, और कोई संकेत नहीं है कि ऐरे कैसे बनाया जाता है)

मेरे पास जावास्क्रिप्ट ऑब्जेक्ट है:

id="1";
name = "serdar";

और मेरे पास एक ऐरे है जिसमें उपरोक्त कई वस्तुएं हैं। मैं उस सरणी से किसी ऑब्जेक्ट को कैसे हटा सकता हूं जैसे कि:

obj[1].remove();

  //K.I.S.S. method
  //(the setup/comments is/are longer than the code)
  //cards is a two dimensional array object
  //  has an array object with 4 elements at each first dimensional index
  //var cards = new Array()
  //cards[cards.length] = new Array(name, colors, cost, type)
  //Can be constructed with Associated arrays, modify code as needed.
  //my test array has 60 'cards' in it
  //  15 'cards' repeated 4 times each
  //  groups were not sorted prior to execution
  //  (I had 4 groups starting with 'U' before the first 'A')
  //Should work with any dimensionality as long as first
  //index controls sort order

  //sort and remove duplicates
  //Algorithm:
  //  While same name side by side, remove higher entry;
  //  assumes 'cards' with same name have same other data
  //  (otherwise use cards[i-1] === cards[i] to compare array objects).
  //Tested on IE9 and FireFox (multiple version #s from 31 up).
  //Also tested by importing array data from 5MB text file.
  //Quick execution
  cards.sort()
  for (i=1; i<cards.length-1; i++){
    while (cards[i-1][0] == cards[i][0]){
       cards.splice(i,1)
    }
  }

अच्छी तरह से splice काम करता है:

var arr = [{id:1,name:'serdar'}];
arr.splice(0,1);
// []

Arrays पर delete ऑपरेटर का उपयोग न करें।

लेकिन शायद आप ऐसा कुछ चाहते हैं?

var removeByAttr = function(arr, attr, value){
    var i = arr.length;
    while(i--){
       if( arr[i] 
           && arr[i].hasOwnProperty(attr) 
           && (arguments.length > 2 && arr[i][attr] === value ) ){ 

           arr.splice(i,1);

       }
    }
    return arr;
}

बस नीचे एक उदाहरण।

var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
removeByAttr(arr, 'id', 1);   
// [{id:2,name:'alfalfa'}, {id:3,name:'joe'}]

removeByAttr(arr, 'name', 'joe');
// [{id:2,name:'alfalfa'}]

delete obj[1];

ध्यान दें कि यह सरणी सूचकांक नहीं बदलेगा। आपके द्वारा हटाए गए किसी भी सरणी सदस्य "स्लॉट" के रूप में बने रहेंगे जो undefined


यदि आपके पास ES2015 फ़ंक्शंस तक पहुंच है, और आप एक और अधिक कार्यात्मक दृष्टिकोण की तलाश में हैं तो मैं कुछ इस तरह से जाऊंगा:

const people = [
  { id: 1, name: 'serdar' },
  { id: 5, name: 'alex' },
  { id: 300, name: 'brittany' }
];

const idToRemove = 5;

const filteredPeople = people.filter((item) => item.id !== idToRemove);

// [
//   { id: 1, name: 'serdar' },
//   { id: 300, name: 'brittany' }
// [

हालांकि देखें, filter() गैर-उत्परिवर्तन है, इसलिए आपको एक नई सरणी मिल जाएगी।

फ़िल्टर पर मोज़िला डेवलपर नेटवर्क नोट्स देखें


हटाएं-कीवर्ड का प्रयोग करें।

delete obj[1];

संपादित करें: देखें: जावास्क्रिप्ट में सरणी तत्वों को हटाएं - हटाएं बनाम स्प्लिस डिलीट ऑफ़सेट को परिभाषित करेगा लेकिन प्रविष्टि को पूरी तरह से हटा नहीं देगा। डेविड ने कहा जैसे स्प्लिस सही होगा।


मैं इसे थोड़ा सा उपयोग करता हूं इसलिए मैंने एक छोटा प्रोटोटाइप बनाया। बस आइटम की तलाश है तो एक मैच होने पर इसे बाहर खींचता है।

//Prototype to remove object from array, removes first
//matching object only
Array.prototype.remove = function (v) {
    if (this.indexOf(v) != -1) {
        this.splice(this.indexOf(v), 1);
        return true;
    }
    return false;
}

इस तरह कहा जा सकता है:

var arr = [12, 34, 56];
arr.remove(34);

नतीजा होगा [12, 56]

अगर कोई सफल निकाला गया तो एक बुलियन रिटर्न है, अगर तत्व मौजूद नहीं है तो झूठा है।


आप या तो splice() विधि या delete ऑपरेटर का उपयोग कर सकते हैं।

मुख्य अंतर यह है कि जब आप डिलीट ऑपरेटर का उपयोग करके सरणी तत्व delete , तो सरणी की लंबाई प्रभावित नहीं होती है, भले ही आप सरणी के अंतिम तत्व को हटा दें। दूसरी तरफ, splice() विधि सभी तत्वों को बदल देती है जैसे कि हटाए गए तत्व के स्थान पर कोई छेद नहीं रहता है।

delete ऑपरेटर का उपयोग कर उदाहरण:

var trees = ["redwood", "bay", "cedar", "oak", "maple"];  
delete trees[3];  
if (3 in trees) {  
   // this does not get executed  
}
console.log(trees.length);  //  5
console.log(trees);         //  ["redwood", "bay", "cedar", undefined, "maple"]

splice() विधि का उपयोग कर उदाहरण:

var trees = ["redwood", "bay", "cedar", "oak", "maple"];  
trees.splice(3, 1);
console.log(trees.length);  //  4
console.log(trees);         //  ["redwood", "bay", "cedar", "maple"]

var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
var ind = arr.findIndex(function(element){
   return element.id===2;
})
if(ind!==-1){
arr.splice(ind, 1)
}
console.log (arr)

कृपया ध्यान दें कि ढूँढें इंडेक्स विधि इंटरनेट एक्सप्लोरर में समर्थित नहीं है लेकिन पॉलीफिल का उपयोग here से किया जा सकता here


यदि आप इंडेक्स को जानते हैं कि ऑब्जेक्ट में सरणी के भीतर है तो आप splice () का उपयोग कर सकते हैं, जैसा कि अन्य ने उल्लेख किया है, यानी:

var removedObject = myArray.splice(index,1);
removedObject = null;

यदि आप इंडेक्स को नहीं जानते हैं तो आपको इसके लिए सरणी खोजनी होगी, यानी:

for (var n = 0 ; n < myArray.length ; n++) {
    if (myArray[n].name == 'serdar') {
      var removedObject = myArray.splice(n,1);
      removedObject = null;
      break;
    }
}

मार्सेलो


var user = [
  { id: 1, name: 'Siddhu' },
  { id: 2, name: 'Siddhartha' },
  { id: 3, name: 'Tiwary' }
];

var recToRemove={ id: 1, name: 'Siddhu' };

user.splice(user.indexOf(recToRemove),1)




object