मेरे पास एक सरणी है जो इस तरह दिखता है: var y = [1, 2, 3];
मैं 2
सरणी से निकालना चाहूंगा y
।
मैं jQuery का उपयोग करके किसी सरणी से एक विशेष मूल्य कैसे निकाल सकता हूं? मैंने कोशिश की है pop()
लेकिन वह हमेशा अंतिम तत्व को हटा देता है।
मेरे पास एक सरणी है जो इस तरह दिखता है: var y = [1, 2, 3];
मैं 2
सरणी से निकालना चाहूंगा y
।
मैं jQuery का उपयोग करके किसी सरणी से एक विशेष मूल्य कैसे निकाल सकता हूं? मैंने कोशिश की है pop()
लेकिन वह हमेशा अंतिम तत्व को हटा देता है।
जवाबों:
एक काम JSFIDDLE
आप ऐसा कुछ कर सकते हैं:
var y = [1, 2, 2, 3, 2]
var removeItem = 2;
y = jQuery.grep(y, function(value) {
return value != removeItem;
});
परिणाम:
[1, 3]
http://snipplr.com/view/14381/remove-item-from-array-with-jquery/
JQuery के साथ, आप इस तरह एक एकल-लाइन ऑपरेशन कर सकते हैं:
उदाहरण: http://jsfiddle.net/HWKQY/
y.splice( $.inArray(removeItem, y), 1 );
देशी .splice()
और jQuery का उपयोग करता है $.inArray()
।
while
var found; while ((found = $.inArray(removeItem, y)) !== -1) y.splice(found, 1);
.indexOf()
jQuery के बजाय ES5 के साथ बहुत अच्छा है क्योंकि आप अगले खोज के लिए शुरुआती बिंदु के रूप में पाए गए अंतिम सूचकांक का उपयोग कर सकते हैं, जो हर बार पूरे सरणी को खोजने की तुलना में कहीं अधिक कुशल है। var found=0; while ((found = y.indexOf(removeItem, found)) !== -1) y.splice(found, 1);
jQuery.filter
विधि उपयोगी है। यह Array
वस्तुओं के लिए उपलब्ध है ।
var arr = [1, 2, 3, 4, 5, 5];
var result = arr.filter(function(elem){
return elem != 5;
});//result -> [1,2,3,4]
http://jsfiddle.net/emrefatih47/ar0dhvhw/
एकमास 6 में:
let values = [1,2,3,4,5];
let evens = values.filter(v => v % 2 == 0);
alert(evens);
आप underscore.js का उपयोग कर सकते हैं । यह वास्तव में चीजों को सरल बनाता है।
आपके मामले में आपको जो भी कोड लिखना होगा, वह है -
_.without([1,2,3], 2);
और परिणाम [1,3] होगा।
यह आपके द्वारा लिखे गए कोड को कम कर देता है।
एक jQuery तरीका नहीं है, लेकिन ... सरल तरीके का उपयोग क्यों न करें। निम्न सरणी से 'c' निकालें
var a = ['a','b','c','d']
a.splice(a.indexOf('c'),1);
>["c"]
a
["a", "b", "d"]
आप यह भी उपयोग कर सकते हैं: (खुद पर ध्यान दें: उन वस्तुओं को संशोधित न करें जिन्हें आप नहीं करते हैं )
Array.prototype.remove = function(v) { this.splice(this.indexOf(v) == -1 ? this.length : this.indexOf(v), 1); }
var a = ['a','b','c'];
a.remove('c'); //value of "a" is now ['a','b']
जोड़ना सरल हैa.push('c')
//This prototype function allows you to remove even array from array
Array.prototype.remove = function(x) {
var i;
for(i in this){
if(this[i].toString() == x.toString()){
this.splice(i,1)
}
}
}
उपयोग करने का उदाहरण
var arr = [1,2,[1,1], 'abc'];
arr.remove([1,1]);
console.log(arr) //[1, 2, 'abc']
var arr = [1,2,[1,1], 'abc'];
arr.remove(1);
console.log(arr) //[2, [1,1], 'abc']
var arr = [1,2,[1,1], 'abc'];
arr.remove('abc');
console.log(arr) //[1, 2, [1,1]]
इस प्रोटोटाइप फ़ंक्शन का उपयोग करने के लिए आपको इसे अपने कोड में पेस्ट करना होगा। फिर आप इसे किसी भी सरणी में 'डॉट नोटेशन' के साथ लागू कर सकते हैं:
someArr.remove('elem1')
i
ओवरराइट हो जाता है।
जावास्क्रिप्ट में ऐसा करने का कोई मूल तरीका नहीं है। आप इसके बजाय ऐसा करने के लिए एक पुस्तकालय का उपयोग कर सकते हैं या एक छोटा कार्य लिख सकते हैं: http://ejohn.org/blog/javascript-array-remove/
आप इस तरह से उपयोग नहीं कर सकते हैं:
var arr = [ 1 , 2 , 3 , 5 , 8];
var searchValue = 2;
var newArr = $(arr).not([searchValue]).get();
searchValue
4 में बदला है, कोड चलाया है, कोई समस्या नहीं मिली। सभी मान अभी भी मौजूद थे। @ JulianK
User113716 के उत्तर का मेरा संस्करण। अगर कोई मैच नहीं मिलता है, तो उसका मूल्य निकाल दिया जाता है, जो अच्छा नहीं है।
var y = [1, 2, 3]
var removeItem = 2;
var i = $.inArray(removeItem,y)
if (i >= 0){
y.splice(i, 1);
}
alert(y);
यह अब 1 आइटम निकालता है यदि एक मैच पाया जाता है, 0 अगर कोई मैच नहीं मिलता है।
यह काम किस प्रकार करता है:
value
में पहला इंडेक्स खोजता हैarray
count
शुरू होने वाले मानों की संख्या को हटा देता है index
, इसलिए हम सिर्फ एक चाहते count
हैं1
//in case somebody needs something like this: multidimensional array (two items)
var ar = [[0,'a'],[1,'b'],[2,'c'],[3,'d'],[4,'e'],[5,'f']];
var removeItem = 3;
ar = jQuery.grep(ar, function(n) {
return n[0] != removeItem; //or n[1] for second item in two item array
});
ar;
ब्याह के साथ एक सरल उपाय है। W3School ब्याह के अनुसार वाक्य रचना निम्नलिखित है;
array.splice(index, howmany, item1, ....., itemX)
सूची आवश्यक है। एक पूर्णांक जो वस्तुओं को जोड़ने / हटाने के लिए किस स्थिति में निर्दिष्ट करता है, सरणी के अंत से स्थिति को निर्दिष्ट करने के लिए नकारात्मक मानों का उपयोग करें
कितने आवश्यक है। निकाले जाने वाली वस्तुओं की संख्या। यदि 0 पर सेट किया गया है, तो कोई आइटम नहीं हटाया जाएगा
आइटम 1, ..., आइटमएक्स वैकल्पिक। नए आइटम को सरणी में जोड़ा जाना है
ध्यान रखें, निम्न js दिए गए सरणी से एक या अधिक मिलान किए गए आइटम को पॉप करेंगे यदि मिला, अन्यथा सरणी के अंतिम आइटम को नहीं हटाएंगे।
var x = [1,2,3,4,5,4,4,6,7];
var item = 4;
var startItemIndex = $.inArray(item, x);
var itemsFound = x.filter(function(elem){
return elem == item;
}).length;
या
var itemsFound = $.grep(x, function (elem) {
return elem == item;
}).length;
तो फाइनल को निम्नलिखित की तरह देखना चाहिए
x.splice( startItemIndex , itemsFound );
उम्मीद है की यह मदद करेगा।
पहले जाँच करता है कि तत्व सरणी में मौजूद है या नहीं
$.inArray(id, releaseArray) > -1
यदि यह सरणी में मौजूद है, तो उपरोक्त लाइन उस तत्व का सूचकांक लौटाती है, अन्यथा यह -1 देता है
releaseArray.splice($.inArray(id, releaseArray), 1);
अब उपर्युक्त लाइन इस तत्व को सरणी से हटा देगा यदि मिला। नीचे दिए गए तर्क को योग करने के लिए सरणी से तत्व की जांच और हटाने के लिए आवश्यक कोड है।
if ($.inArray(id, releaseArray) > -1) {
releaseArray.splice($.inArray(id, releaseArray), 1);
}
else {
releaseArray.push(id);
}
मेरे पास एक समान कार्य था जहां मुझे सरणी में वस्तुओं की एक संपत्ति के आधार पर कई वस्तुओं को हटाने की आवश्यकता थी।
इसलिए कुछ पुनरावृत्तियों के बाद मैं समाप्त होता हूं:
list = $.grep(list, function (o) { return !o.IsDeleted });
मैं एक pick_and_remove()
फ़ंक्शन के साथ एरे क्लास का विस्तार करूँगा , जैसे:
var ArrayInstanceExtensions = {
pick_and_remove: function(index){
var picked_element = this[index];
this.splice(index,1);
return picked_element;
}
};
$.extend(Array.prototype, ArrayInstanceExtensions);
जबकि यह थोड़ा वर्बोज़ लग सकता है, अब आप कॉल कर सकते हैं pick_and_remove()
आप किसी भी सरणी पर आप संभवतः चाहते हैं!
उपयोग:
array = [4,5,6] //=> [4,5,6]
array.pick_and_remove(1); //=> 5
array; //=> [4,6]
/** SUBTRACT ARRAYS **/
function subtractarrays(array1, array2){
var difference = [];
for( var i = 0; i < array1.length; i++ ) {
if( $.inArray( array1[i], array2 ) == -1 ) {
difference.push(array1[i]);
}
}
return difference;
}
फिर आप अपने कोड में कहीं भी फ़ंक्शन को कॉल कर सकते हैं।
var I_like = ["love", "sex", "food"];
var she_likes = ["love", "food"];
alert( "what I like and she does't like is: " + subtractarrays( I_like, she_likes ) ); //returns "Naughty :P"!
यह सभी मामलों में काम करता है और उपरोक्त विधियों में समस्याओं से बचा जाता है। उम्मीद है की वो मदद करदे!
यह कोशिश करो यह मेरे लिए काम करता है
_clientsSelected = ["10", "30", "12"];
function (removeItem) {
console.log(removeItem);
_clientsSelected.splice($.inArray(removeItem, _clientsSelected), 1);
console.log(_clientsSelected);
`enter code here`},
यहां दूसरा सबसे उत्कीर्ण उत्तर ओपी चाहता है कि किसी भी व्यवहार के एक-लाइनर jQuery विधि के निकटतम संभव ट्रैक पर है, लेकिन वे अपने कोड के अंत में ठोकर खाई, और इसका एक दोष है। यदि आपका आइटम हटाया जाना वास्तव में सरणी में नहीं है, तो अंतिम आइटम हटा दिया जाएगा।
कुछ लोगों ने इस मुद्दे पर ध्यान दिया है, और कुछ ने इस से बचाव के लिए लूप के तरीकों की पेशकश की है। मैं सबसे छोटी, सबसे अच्छी विधि की पेशकश कर सकता हूं जो मुझे मिल सकती है, और मैंने इस विधि के अनुसार उनके कोड को ठीक करने के तरीके के लिए उनके उत्तर के तहत टिप्पणी की है।
var x = [1, 2, "bye", 3, 4];
var y = [1, 2, 3, 4];
var removeItem = "bye";
// Removing an item that exists in array
x.splice( $.inArray(removeItem,x), $.inArray(removeItem,x) ); // This is the one-liner used
// Removing an item that DOESN'T exist in array
y.splice( $.inArray(removeItem,y), $.inArray(removeItem,y) ); // Same usage, different array
// OUTPUT -- both cases are expected to be [1,2,3,4]
alert(x + '\n' + y);
सरणी x आसानी से तत्व "अलविदा" को हटा देगा, और सरणी y अछूता हो जाएगा।
$.inArray(removeItem,array)
दूसरे तर्क के रूप में तर्क का उपयोग वास्तव में बंटवारे की लंबाई होने के कारण समाप्त होता है। चूंकि आइटम नहीं मिला था, इसलिए यह मूल्यांकन करता है array.splice(-1,-1);
, जिसके परिणामस्वरूप कुछ भी नहीं हो सकता है ... इसके लिए एक लूप लिखने के बिना सभी।
वेनिला जावास्क्रिप्ट का उपयोग करके सरणी से 2 को सुरक्षित रूप से निकालने के लिए:
// Define polyfill for browsers that don't natively support Array.indexOf()
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(searchElement, fromIndex) {
var k;
if (this===null) {
throw new TypeError('"this" is null or not defined');
}
var O = Object(this),
len = O.length >>> 0;
if (len===0) return -1;
var n = +fromIndex || 0;
if (Math.abs(n)===Infinity) n = 0;
if (n >= len) return -1;
k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
while (k < len) {
if (k in O && O[k]===searchElement) return k;
++k;
}
return -1;
};
}
// Remove first instance of 2 from array
if (y.indexOf(2) > -1) {
y.splice(y.indexOf(2), 1);
}
/* To remove all instances of 2 from array, change 'if' to 'while':
while (y.indexOf(2) > -1) {
y.splice(y.indexOf(2), 1);
}
*/
console.log(y); // Returns [1, 3]
पॉलीफ़िल स्रोत: मोज़िला
सरफराज के जवाब से जोड़ने के लिए, किसी ने भी इसे अभी तक एक समारोह में नहीं बनाया है।
यदि आप अपने सरणी में एक से अधिक बार समान मान रखते हैं, तो .filter विधि का उपयोग करके ddagsan से उत्तर का उपयोग करें।
function arrayRemoveVal(array, removeValue){
var newArray = jQuery.grep(array, function(value) {return value != removeValue;});
return newArray;
}
var promoItems = [1,2,3,4];
promoItems = arrayRemoveVal(promoItems, 3);// removes 3
console.log(promoItems);
promoItems = arrayRemoveVal(promoItems, 3);// removes nothing
console.log(promoItems);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>