2010-08-31 26 views
7

मेरे पास यह एक जावास्क्रिप्ट var पर है: (यह एक http लौटा डेटा है, और मुझे नहीं पता कि यह एक सरणी या स्ट्रिंग है - (हम उसे कैसे देख सकते हैं?) - अद्यतन: टाइपिंग का उपयोग करके "स्ट्रिंग", तो यह है । एक स्ट्रिंगजावास्क्रिप्ट: मैं एक सरणी कैसे बदल सकता हूं?

[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}] 

हम कैसे पारित कर सकते हैं/कि परिणत कुछ इस तरह में,:

["gggg.fa","rarar.fa"] 

धन्यवाद एक बहुत, सदस्य

+0

shudnt कुंजी-मान जोड़ों में कुंजियां अनन्य होनी? – Kasturi

+0

अच्छा सवाल। मुझे नहीं पता। मेरे पास हमेशा एक ही कुंजी है क्योंकि fetch_obj के बाद, मैं json_encode php फ़ंक्शन से प्राप्त करता हूं। – MEM

+0

@ कस्तुरी यह 'पारंपरिक' अर्थ में केवीपी नहीं है, यह दो वस्तुओं की एक सरणी है, जिनमें से प्रत्येक में 'नोम डोमिनियो' संपत्ति है। – roryf

उत्तर

7

यह प्रश्न this one से दृढ़ता से संबंधित है।

मैं my answer पढ़ने का सुझाव दूंगा, क्योंकि यह वास्तव में मदद करेगा; और थोड़ा बदलाव के साथ, यह सिर्फ काम करेगा:

var responseString = '[{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]', 
    responseObject = JSON.parse(responseString), 
    nombresDeDominio = []; 

for(var i in responseObject) { 
    nombresDeDominio.push(responseObject[i].nomeDominio) 
} 

सुटे!

0

यह एक http डेटा नहीं दिया है, और मैं अगर यह किसी सरणी या स्ट्रिंग

यह JSON है पता नहीं करते हैं, और आप जावास्क्रिप्ट में सीधे उपयोग कर सकते हैं।

यदि आप इसे अपने सरणी में बदलते हैं, तो आप एसोसिएशन कुंजी/मान खो देंगे; क्या आप वाकई चाहते हैं कि आप क्या चाहते हैं?

+0

वास्तव में सुनिश्चित नहीं है। मैं यहां अपना पूरा विश्वास खो रहा हूं। बिंदु यह डेटा एक स्वत: पूर्ण प्लगइन को पास करना है और, मुझे समझ में नहीं आता कि प्लगइन क्या चाहता है। मैं यहाँ पूरी तरह से खो गया हूँ। यह संबंधित है: http://stackoverflow.com/questions/3609581/jquery-autocomplete-help-with-code-what-next एक्स.एक्स – MEM

1

अपने डेटा मान लिया जाये कि हमेशा की तरह लग रहा है, तो आप कुछ इस तरह कर सकते हैं:

var foo = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]; 
var newarr = []; 
for (var i=0,j=foo.length;i<j;i++) { 
    newarr.push(foo[i]['nomeDominio']); 
} 

यहाँ एक काम कर fiddle है।

+0

बहुत बहुत धन्यवाद। जब मुझे एक की आवश्यकता होती है तो उन्हें वास्तव में उपयोग करने के लिए मुझे और अधिक देखना होगा। हम नहीं जानते कि किसी दिए गए सिंटैक्स कीवर्ड के रूप में एक भाषा है, लेकिन लगभग निश्चित है। एक के साथ उदाहरण के लिए बहुत बहुत धन्यवाद। – MEM

0

ठीक है, सबसे पहले एक "बात" के प्रकार के प्राप्त करने के लिए, "typeof" ऑपरेटर का उपयोग (ध्यान दें कि एक सरणी के प्रकार के एक वस्तु, नहीं 'सरणी' है!):

var a = "string"; 
var b = 1; 
var c = new Array(); 
alert(typeof(a)); // string 
alert(typeof(b)); // number 
alert(typeof(c)); // object 

साहचर्य सरणी में मूल्यों पर प्राप्त करने के लिए (यह मानते हुए यह एक है), तो आप सिर्फ यह माध्यम से पाश कर सकते हैं, तो जैसे:

var d = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]; 
d["bob"] = "alice"; 
d["gary"] = "stephen"; 

for(var key in d) { 
    alert(d[key]); 
} 
+0

धन्यवाद। मैंने टाइपफ का उपयोग किया है और मैं यह भूलने की कोशिश नहीं करूंगा कि वस्तु के बारे में महत्वपूर्ण नोट एक सरणी है। ;) बहुत बहुत धन्यवाद। – MEM

9

आप पता लगा सकते हैं अगर एक स्ट्रिंग या जाँच करके एक पहले से ही पार्स वस्तु है आपके चर का प्रकार, उदाहरण:

ajax('url', function (response) { 
    alert(typeof response); 
}); 

अब आप यह पता लगाएंगे कि यह "string" या एक ऐरे "object" है।

यदि यह एक स्ट्रिंग है, तो आप JSON.parse विधि का उपयोग @alcuadrado के रूप में कर सकते हैं, अन्यथा आप सरणी का उपयोग कर सकते हैं।

कई उत्तरों कथन के उपयोग को एरेरेट पर सरणी तत्वों पर उपयोग करने का सुझाव देते हैं, मैं आपको इसके लिए इसका उपयोग करने के लिए हतोत्साहित करता हूं।

for-in बयान करने के लिए इस्तेमाल किया जाना चाहिए वस्तु गुण अधिक गणना, पुनरावृति सरणी या सरणी की तरह वस्तुओं से अधिक करने के लिए, एक अनुक्रमिक पाश का उपयोग @Ken Redler पता चलता है के रूप में।

आप वास्तव में इस उद्देश्य के लिए for-in से बचना चाहिए क्योंकि:

  • गणन के आदेश इसकी गारंटी नहीं है, गुण सांख्यिक क्रम में दौरा नहीं किया जा सकता है।
  • अंकुरित गुण भी गुणित।

तुम भी Array.prototype.map विधि आपकी आवश्यकताओं को पूरा करने के लिए उपयोग कर सकते हैं:

var response = [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}]; 
var array = response.map(function (item) { return item.nomeDominio; }); 
// ["gggg.fa", "rarar.fa"] 
+0

ग्रेट उत्तर ब्रो, मुझे अनुक्रमिक पाश के अंतर और सरणी में फॉर-इन नहीं पता था। पहला स्निपेट थोड़ा उलझन में दिख सकता है, हालांकि AJAX फ़ंक्शन क्या है? और प्रतिक्रिया आपको एक पार्सेड सरणी कैसे दे सकती है? धन्यवाद (: – alcuadrado

+0

+1 'मानचित्र()' के लिए +1। दुख की बात है, यदि आप सवारी के लिए आईई 7/8 चाहते हैं तो आपको अपना खुद का (सशर्त) कार्यान्वयन करना होगा। आईई 9 में यह है, हालांकि –

+0

धन्यवाद आपके महान के लिए बहुत सी सीएमएस टिप्पणी और विस्तार। मैंने alcuadrado सुझाव का उपयोग किया है क्योंकि यह टाइपिंग के रूप में टाइप करने के बाद एक स्ट्रिंग था। – MEM

1
function transform(array, f) { 
    var ret = []; 
    $.each(array, function(index) { 
     var v = f.call(this, index); 
     if(v) { 
      ret.push(v); 
     } 
    }); 
    return ret; 
} 

var result = transform(
    [{"nomeDominio":"gggg.fa"},{"nomeDominio":"rarar.fa"}], 
    function() { return this.nomeDominio; } 
); 

alert(result.toString()); 
संबंधित मुद्दे