2012-05-29 18 views
7

कुछ एक मुझे बता सकते हैं कैसे मैं एक सरणी मैं इस Google राशि से स्ट्रिंग तत्व को हटा सकते हैं और सभी मैं मिल सूचकांक संख्या से हटाने के हैनिकालें स्ट्रिंग तत्व

मेरी उदाहरण:

var myarray = ["xyz" , "abc" , "def"] ; 
var removeMe = "abc" ; 

    myarray.remove(removeMe) ; 
    consle.log(myarray) ; 

Uncaught TypeError: Object xyz,abc,def has no method 'remove' 

jsfiddle

:

इस मैं क्या कंसोल से मिलता है

उत्तर

6

https://stackoverflow.com/a/3955096/711129 से:

Array.prototype.remove= function(){ 
    var what, a= arguments, L= a.length, ax; 
    while(L && this.length){ 
     what= a[--L]; 
     while((ax= this.indexOf(what))!= -1){ 
      this.splice(ax, 1); 
     } 
    } 
    return this; 
} 
var ary = ['three', 'seven', 'eleven']; 

ary.remove('seven') 

या, यह एक वैश्विक समारोह बनाने:

function removeA(arr){ 
var what, a= arguments, L= a.length, ax; 
while(L> 1 && arr.length){ 
    what= a[--L]; 
    while((ax= arr.indexOf(what))!= -1){ 
     arr.splice(ax, 1); 
    } 
} 
return arr; 
} 
var ary= ['three','seven','eleven']; 
removeA(ary,'seven') 

आप एक समारोह अपने आप को बनाने के लिए किया है। आप या तो सरणी पर लूप कर सकते हैं और वहां से तत्व को हटा सकते हैं, या यह फ़ंक्शन आपके लिए यह कर सकता है। किसी भी तरह से, यह एक मानक जेएस सुविधा नहीं है। आप jQuery

myarray.splice($.inArray("abc", myarray), 1); उपयोग कर रहे हैं के बाद से

5

नीचे की तरह की कोशिश करो,

myarray.splice(myarray.indexOf(removeMe),1); 

आप ब्राउज़रों कि indexOf

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement /*, fromIndex */) { 
     "use strict"; 
     if (this == null) { 
      throw new TypeError(); 
     } 
     var t = Object(this); 
     var len = t.length >>> 0; 
     if (len === 0) { 
      return -1; 
     } 
     var n = 0; 
     if (arguments.length > 0) { 
      n = Number(arguments[1]); 
      if (n != n) { // shortcut for verifying if it's NaN 
       n = 0; 
      } else if (n != 0 && n != Infinity && n != -Infinity) { 
       n = (n > 0 || -1) * Math.floor(Math.abs(n)); 
      } 
     } 
     if (n >= len) { 
      return -1; 
     } 
     var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); 
     for (; k < len; k++) { 
      if (k in t && t[k] === searchElement) { 
       return k; 
      } 
     } 
     return -1; 
    } 
} 
+4

एक टिप्पणी, कुछ ब्राउज़र का समर्थन नहीं करते 'indexOf' – jwatts1980

+1

इसके अलावा, अगर' indexOf' तत्व नहीं मिल रहा है, तो आप सूचकांक '-1' जो अभी भी एक को हटा के साथ वाला जोड़ रहे हैं तत्व – Esailija

16

का समर्थन नहीं करता के लिए इस नीचे स्क्रिप्ट (from MDN) जोड़ सकते हैं

संपादित करें यदि आइटम सरणी में नहीं है, तो यह 'एक-लाइनर' एक त्रुटि फेंक देगा। कुछ थोड़ा बेहतर

var index = $.inArray("abc", myarray); 
if (index>=0) myarray.splice(index, 1); 
+2

आपको इसके लिए jQuery का उपयोग करने की आवश्यकता नहीं है। –

+3

कुछ ब्राउज़र 'indexOf' का समर्थन नहीं करते हैं। Jquery's 'inArray' ब्राउज़र से funcationality सार तत्व होगा। – jwatts1980

+0

+1 का उपयोग करने के लिए '> = 0' http://jsperf.com/not-vs-gt-vs-ge/4 (और सही उत्तर के लिए) – ajax333221

संबंधित मुद्दे