2013-01-27 21 views
16

संभव डुप्लिकेट:
Remove specific element from a javascript array?साहचर्य सरणी से वह मान निकालें

मैं एक सरणी, जिसमें से मैं एक मूल्य निकालना चाहते हो रहा है।

एक सरणी

[ 'utils': [ 'util1', 'util2' ] ]

अब मैं सिर्फ util2 निकालना चाहते हैं के रूप में इस पर विचार करें। मैं यह कैसे कर सकता हूं, मैंने delete का उपयोग करने का प्रयास किया लेकिन यह काम नहीं किया।

क्या कोई मेरी मदद कर सकता है?

+2

आसपास के वर्ग ब्रेस को एक ब्रैकेट होना चाहिए यदि यह एक वस्तु शाब्दिक है। – 0x499602D2

+0

मैं एक एसोसिएटिव सरणी नहीं देख सकता। – Bergi

उत्तर

5

splice विधि का उपयोग करें:

var object = { 'utils': [ 'util1', 'util2' ] } 

object.utils.splice(1, 1); 

आप सरणी तत्व की वास्तविक स्थिति पता नहीं है, तो आप सरणी पर पुनरावृति और वहाँ से तत्व ब्याह करने के लिए आवश्यकता होगी। निम्न विधि आज़माएं:

for (var i = object.utils.length; i--;) { 
    var index = object.utils.indexOf('util2'); 

    if (index === -1) break; 

    if (i === index) { 
     object.utils.splice(i, 1); break; 
    } 
} 

अद्यतन: तकनीकफोबार का उत्तर मेरी तुलना में अधिक मूर्खतापूर्ण प्रतीत होता है। इसके बजाय उसका उपयोग करने पर विचार करें।

+0

+1, आप लगभग वहां हैं: यह 'object.utils.splice (1, 1)' है। आपको यह बताना होगा कि कितने निकालें (दूसरा '1')। पहला '1' बस यह बताता है कि किस इंडेक्स को कुछ करना है। * संपादित करें: * हाँ, तुम वहाँ जाओ। :-) –

+0

क्या होगा यदि ऑब्जेक्ट को इस तरह परिभाषित किया गया था: 'var object = {' utils ': [' util2 ',' util1 ']} '? –

+1

डारिन कहना चाहता था, क्या होगा यदि तत्वों का क्रम अलग है। इस सवाल में सभी का उत्तर दिया गया है कि यह एक डुप्लिकेट है। –

0

मुझे लगता है कि जावास्क्रिप्ट में सहयोगी सरणी नामक ऐसी कोई चीज़ नहीं है। यह वास्तव में एक वस्तु है।

[ 'utils': [ 'util1', 'util2' ] ] 

इस लाइन के लिए, मुझे नहीं लगता कि यह संकलित होगा। आपको इसके बजाय इसे लिखना चाहिए।

var obj = { 'utils': [ 'util1', 'util2' ] } 

इसलिए सरणी (अंदरूनी सरणी) में तत्व "उपयोग 2" को हटाने के लिए, 2 तरीके हैं।

  1. उपयोग पॉप()

    obj["utils"].pop(); // obj["utils"] is used to access the "property" of the object, not an element in associative array 
    
  2. को कम लंबाई

    obj["utils"].length --; 
    
5

आप Array.indexOf() साथ कॉम्बो में Array.splice() उपयोग कर सकते हैं के माध्यम से लूप के बिना वांछित व्यवहार प्राप्त करने के लिए सरणी:

var toDelete = object.utils.indexOf('util1'); 
if(toDelete != -1) { 
    object.utils.splice(toDelete, 1); 
} 
संबंधित मुद्दे