मैं कैसे किसी आइटम को निकालने करते [i] मदों से एक बार यह तक पहुँच जाता है में:निकालें आइटम [i] jQuery से प्रत्येक पाश
$.each(items, function(i) {
// how to remove this from items
});
मैं कैसे किसी आइटम को निकालने करते [i] मदों से एक बार यह तक पहुँच जाता है में:निकालें आइटम [i] jQuery से प्रत्येक पाश
$.each(items, function(i) {
// how to remove this from items
});
आप सरणी से एक तत्व को निकालना चाहते हैं, का उपयोग splice()
var myArray =['a','b','c','d'];
var indexToRemove = 1;
// first argument below is the index to remove at,
//second argument is num of elements to remove
myArray.splice(indexToRemove , 1);
myArray
अब ['a','c','d']
सवाल यह था कि इसे लूप से कैसे हटाया जाए। –
@CiprianTarta प्रश्न स्पष्ट रूप से बीमार स्वरूपित था क्योंकि इसने इसे op के लिए उत्तर दिया ... लेकिन मैं सहमत हूं। Splice का उपयोग वास्तव में काम नहीं करता है जब यह किसी भी '$ .each' लूप के अंदर होता है क्योंकि यह लूप को गड़बड़ कर देगा। – cregox
कुछ
तरहvar indexToBeRemoved = 3; // just an illustration
$.each(items, function(i) {
if(i==indexToBeRemoved){
$(this).remove();
}
});
यदि ओपी क्या करना चाहता है तो डीओएम से एक तत्व हटा दें, तो यह सही है। अगर वह सूची से किसी आइटम को हटाना चाहता है, तो यह ऐसा नहीं करेगा। – Pointy
हां, मुझे लगता है कि यह एक डोम तत्व है, अन्यथा jquery का उपयोग करने का क्या मतलब है .... – Aliostad
'JQuery' का उपयोग करने का बिंदु' json' ऑब्जेक्ट को पुन: सक्रिय कर सकता है। – Dementic
यह बेहतर नहीं होगा इस मामले में $.each
का उपयोग करें। इसके बजाय $.grep
का उपयोग करें। यह एक अपवाद के साथ $.each
के रूप में एक सरणी के माध्यम से बहुत लूप के माध्यम से loops। यदि आप कॉलबैक से true
लौटाते हैं, तो तत्व बनाए रखा जाता है। अन्यथा, इसे सरणी से हटा दिया जाता है। एक $.grep
कॉलबैक के संदर्भ में this
window
के लिए सेट है, सरणी तत्व के लिए नहीं:
आपका कोड कुछ इस तरह दिखना चाहिए:
items = $.grep(items, function (el, i) {
if (i === 5) { // or whatever
return false;
}
// do your normal code on el
return true; // keep the element in the array
});
एक और टिप्पणी।
बहुत यकीन है कि '$ .grep()' केवल Arrays के लिए है। यदि 'आइटम' एक ऐरे है, तो यह तब तक अच्छा होगा जब तक कि ऐरे के अन्य संदर्भ नहीं हैं जो अद्यतन संस्करण की अपेक्षा कर रहे हैं। : ओ) – user113716
@ पैट्रिक स्पष्टीकरण के लिए धन्यवाद। – lonesomeday
बस दूसरों के लिए ध्यान दें। एल तत्व है मैं सिर्फ सूचकांक है। – ysrb
शामिल होंगे मैं तुम्हें $.map
चाहते अनुमान लगा रहा हूँ। आप return null
किसी आइटम को निकालने के लिए कर सकते हैं और नहीं कैसे सूचकांक शिफ़्ट हो सकता के बारे में चिंता:
items = $.map(items, function (item, index) {
if (index < 10) return null; // Removes the first 10 elements;
return item;
});
समाधान के नीचे है:
_.each(data, function (item, queue) {
if (somecondition) {
delete data[queue]
}
});
ऊपर @lonesomday ने उल्लेख किया (मैं बस यह नहीं जोड़ सके एक टिप्पणी में) grep
सरणी के लिए है, लेकिन आप grep
अंदर अपने चयनकर्ता डाल सकता है:
var items = $.grep($(".myselector", function (el, i) {
return (i===5) ? false : true;
};
यहका उपयोग कर पाया सभी तत्वों को संग्रहीत करेंगेमें 6 वें स्थान पर आइटम छोड़कर (सूची 0 अनुक्रमित है, जो 6 वें तत्व को "5" बनाती है)
हालांकि मैं आमतौर पर सरणी फ़िल्टर करने के लिए $.grep()
का उपयोग करना पसंद करूंगा, मेरे पास एक उदाहरण है जहां मैं पहले से ही डेटासेट को संसाधित करने के लिए सरणी पर $.each()
का उपयोग कर रहा हूं। कुछ प्रसंस्करण करने के बाद, मैं निर्धारित कर सकते हैं या नहीं, आइटम सरणी से हटा दिया जाना चाहिए:
// WARNING - DON'T DO THIS:
$.each(someArray, function(index, item) {
// Some logic here, using 'item'
if (removeItem) {
// Spice this item from the array
someArray.splice(index, 1)
}
// More logic here
});
चेतावनी: यह एक नई समस्या प्रस्तुत करता है! एक बार आइटम को सरणी से विभाजित कर दिया गया है, तो jQuery मूल सरणी की लंबाई के लिए अभी भी लूप होगा। उदा .:
var foo = [1,2,3,4,5];
$.each(foo, function(i, item) {
console.log(i + ' -- ' + item);
if (i == 3){
foo.splice(i, 1);
}
});
विल उत्पादन:
0 -- 1
1 -- 2
2 -- 3
3 -- 4
4 -- undefined
और foo अब [1, 2, 3, 5]
है। सरणी में प्रत्येक आइटम jQuery लूप के सापेक्ष "स्थानांतरित" होता है, और हमने तत्व "5" को पूरी तरह याद किया है, और लूप में अंतिम आइटम undefined
है।सर्वोत्तम इसे हल करने का तरीका एक रिवर्स for
लूप (arr.length - 1
से 0
पर जा रहा है) का उपयोग करना है। यह सुनिश्चित करेगा कि तत्व को हटाने से लूप में अगले आइटम को प्रभावित नहीं होगा।
1) $.grep()
var someArray = $.grep(someArray, function(item) {
// Some logic here, using 'item'
return removeItem == false;
});
$.each(someArray, function(index, item) {
// More logic here
});
2 पाशन से पहले सरणी) दूसरे में आइटम पुश: लेकिन जब से प्रश्न यहाँ $ .प्रत्येक के संबंध में है, इसलिए इस के हल के लिए कुछ वैकल्पिक तरीके हैं सरणी
var choiceArray = [ ];
$.each(someArray, function(index, item) {
// Some logic here, using 'item'
if (removeItem) {
// break out of this iteration and continue
return true;
}
// More logic here
// Push good items into the new array
choiceArray.push(item);
});
आपका लक्ष्य क्या है? यदि आप 'आइटम' से प्रत्येक आइटम को हटाना चाहते हैं, तो बस 'आइटम' को खाली सरणी पर सेट करें। –
'आइटम' क्या है? – SLaks
मुझे अब यह करने की ज़रूरत नहीं है ... क्योंकि मुझे वास्तविक समस्या को महसूस किए बिना अपना जावास्क्रिप्ट फ़ंक्शन फिर से चलाया गया था क्यों यह गैर-आईई ब्राउज़र में समय समाप्त हो रहा था: http://code.google.com/ पी/क्रोमियम/मुद्दों/विवरण? आईडी = 71305 – bcm