2013-05-24 4 views
5

यह मेरा jsonjquery का उपयोग कर जेसन सरणी से मूल्यों को अलग कैसे करें?

{ 
    "data": [ 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 
    ] 
} 

this is my code jquery Code

for(i=0; i<= contacts.data.length; i++) { 
    $.each(contacts.data[i], function(index, objValue){ 
     alert("id "+objValue); 
    }); 
} 

मैं अपने objValue में डेटा मिला है, लेकिन मैं id और name यह इस रंग-रूप की तरह दिखता है की सरणी में अलग से स्टोर करने के लिए पर मेरे कोड bellow है चाहता हूँ

var id=[]; 
var name = []; 
for(i=0; i<= contacts.data.length; i++){ 
    $.each(contacts.data[i], function(index, objValue) { 
     id.push(objValue[index]); // This will be the value "1" from above JSON 
     name.push(objValue[index]); // This will be the value "Skylar Melovia" from above JSON 
    }); 
} 

मैं यह कैसे कर सकता हूं।

+0

इसकी काम करना ठीक है? समस्या को बेहतर परिभाषित करें। –

उत्तर

3
$.each(contacts.data, function(index, objValue) 
{ 
    id.push(objValue[0]); // This will be the value "1" from above JSON 
    name.push(objValue[1]); // This will be the value "Skylar Melovia" from above JSON 

}); 

संपादित करें, वैकल्पिक उपयोग:

$.each(contacts.data, function() 
{ 
    id.push(this[0]); // This will be the value "1" from above JSON 
    name.push(this[1]); // This will be the value "Skylar Melovia" from above JSON 
}); 

$ .प्रत्येक contacts.data से अधिक पुनरावृति जाएगा जो है:

[ 
    //index 1 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    //index=2 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 

] 

anomnymous समारोह आप हस्ताक्षर समारोह (सूचकांक के साथ देते हैं, Objvalue) index के साथ प्रत्येक तत्व पर contact.data सरणी और objValue के मूल्य के साथ लागू किया जाएगा। सूचकांक = 1 के लिए आप होगा:

objValue=[ 
      "1", 
      "Skylar Melovia" 
     ] 

तो फिर तुम objValue उपयोग कर सकते हैं [0] और objValue [1]।

संपादित करें (Dutchie432 टिप्पणी और जवाब के जवाब में;)): तेज़ तरीका jQuery के बिना यह करने के लिए, $ .प्रत्येक अच्छे है लिखने और पढ़ने के लिए लेकिन यहाँ आप सादे पुराने का उपयोग जे एस:

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
+0

ठीक है, वहां आपके पास है। सभी अलग-अलग उत्तर एक ही बिंदु बनाते हैं। यह शायद सबसे अच्छा जवाब है क्योंकि लूप के लिए मेरी आलसी 'लम्बाई' का उपयोग करता है। आपका और अधिक चिकना है। – Dutchie432

+0

चंचल लेकिन जब आपको विशेष रूप से jQuery की आवश्यकता नहीं होती है तो आपको किसी भी तरह के लूप के लिए उपयोग करना चाहिए, लेकिन मुझे लगता है कि ओपी को यह देखने की ज़रूरत है कि $। प्रत्येक काम – TecHunter

+0

समाधान के लिए धन्यवाद और यह सब समझाता है। यह अच्छा काम करता है .. – addy

1

शायद मैं पूरी तरह से समझ नहीं पा रहा हूं, लेकिन मुझे लगता है कि आप डेटा आइटम्स के माध्यम से लूपिंग कर रहे हैं, और उसके बाद निहित मानों के माध्यम से लूपिंग कर रहे हैं। मुझे लगता है कि आप जो चाहते हैं वह सिर्फ डेटा आइटम्स के माध्यम से लूप करना है और क्रमशः 0 और 1 मान खींचना है।

इसके अलावा, मेरा मानना ​​है कि आप अपने पाश में less than (<) ऑपरेटर चाहते हैं के रूप में less than or equal to (<=)

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
0

करने का विरोध किया बाहरी for पाश निकालें। $.each पहले से ही data सरणी पर फिर से चलाता है। data[i] एक सरणी नहीं है, इसलिए $.each इसे पुन: सक्रिय नहीं कर सकता है।

http://jsfiddle.net/ExplosionPIlls/4p5yh/

तुम भी $.each के बजाय for पाश इस्तेमाल कर सकते हैं, लेकिन दोनों नहीं।

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