मेरे पास है:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:
array.remove("B");
लेकिन कोई निष्कासन समारोह नहीं है। मैं इसे कैसे पूर्ण करूं?
मेरे पास है:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:
array.remove("B");
लेकिन कोई निष्कासन समारोह नहीं है। मैं इसे कैसे पूर्ण करूं?
जवाबों:
मैं वास्तव में इस थ्रेड को 1-लाइन समाधान के साथ अपडेट कर रहा हूं:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
मूल रूप से सरणी को फ़िल्टर करने के लिए मूल रूप से सभी तत्वों को अलग करना है जिसे आप निकालना चाहते हैं।
नोट: सभी घटनाओं को दूर करेगा।
संपादित करें:
यदि आप केवल पहली घटना को हटाना चाहते हैं:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
सूची को रिवर्स ऑर्डर में लूप करें, और .spliceविधि का उपयोग करें ।
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
रिवर्स ऑर्डर महत्वपूर्ण है जब खोज शब्द की सभी घटनाओं को हटाया जाना है। अन्यथा, काउंटर बढ़ जाएगा, और आप तत्वों को छोड़ देंगे।
जब केवल पहली घटना को हटाया जाना है, तो निम्नलिखित भी काम करेगा:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0यह कहते हुए कि यह आपके पास है, सी। के रूप में लंबे समय तक स्वचालित रूप से तेजी से नहीं गिना जाता है, जब तक आप सीमा को कैश नहीं करते हैं, तो निश्चित रूप से, जो आपको पहले मैच के बाद भी चलते रहेंगे (लेकिन अगर आप इसे रोकते हैं तो नहीं)।
वन लाइनर्स की सूची
आइए इस समस्या को इस सरणी के लिए हल करें:
var array = ['A', 'B', 'C'];
1. केवल पहला निकालें: उपयोग करें यदि आप सुनिश्चित हैं कि आइटम मौजूद है
array.splice(array.indexOf('B'), 1);
2. केवल अंतिम निकालें: उपयोग करें यदि आप सुनिश्चित हैं कि आइटम मौजूद है
array.splice(array.lastIndexOf('B'), 1);
3. सभी घटनाएँ निकालें:
array = array.filter(v => v !== 'B');
आपको उस स्थान का पता लगाने की आवश्यकता है जिसे आप खोज रहे हैं और .indexOf()फिर उसे हटा दें.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
यह सभी घटनाओं का ध्यान रखेगा।
Uncaught ReferenceError: array is not defined:। गलत क्या है?
.indexOf()बस थोड़ा अधिक का लाभ उठा सकते हैं । यदि आप लूप के भीतर कॉल foundकरने के लिए दूसरे तर्क के रूप में पास करते हैं , तो पहले से ही चेक किए गए और समाप्त नहीं होने वाले एरे में तत्वों को फिर से चेक नहीं किया गया है: .indexOf()found = arr.indexOf(what, found);
केवल
array.splice(array.indexOf(item), 1);
-1अगर कुछ भी नहीं मिला है और नहीं है, तो ब्याह सरणी के अंत से 1 तत्व को हटा देगा
सरल समाधान (ES6)
यदि आपके पास डुप्लिकेट तत्व नहीं है
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
आपको खुद को हटाने के लिए लिखना होगा। आप सरणी पर लूप कर सकते हैं, उस आइटम के सूचकांक को पकड़ सकते हैं जिसे आप निकालना चाहते हैं, और spliceइसे हटाने के लिए उपयोग करें।
वैकल्पिक रूप से, आप एक नई सरणी बना सकते हैं, वर्तमान सरणी पर लूप कर सकते हैं, और यदि वर्तमान ऑब्जेक्ट मेल नहीं खाता है जिसे आप निकालना चाहते हैं, तो इसे एक नए सरणी में डालें।
उपयोग:
array.splice(2, 1);
यह अनुक्रम 2 (3 आइटम) पर शुरू होने वाले सरणी से एक आइटम को निकालता है
array.splice(2,1)जो कि सरणी 2 से 1 आइटम को सरणी से निकालता है। अधिक जानकारी के लिए https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice चेक करें
array.splice का उपयोग करें
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
स्रोत: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
arrayऔर spliceएक बिंदु होना चाहिए।
.indexOf()और.splice()चाल चलनी चाहिए। या हो सकता है, वैकल्पिक रूप से,.filter()।