2017-09-22 18 views
5

इस सरल समस्या के लिए क्षमा करें - लेकिन मुझे कुछ स्पष्ट याद आती है। कोई भी सूचक बहुत मददगार नहीं होगा।जेसन ऑब्जेक्ट

मैं की तरह

var whatever = [{   
"key1" : { "text" : "text1","group" : "1" }, 
"key2" : { "text" : "text2","group" : "2" }, 
"key3" : { "text" : "text3","group" : "3" } 
}]; 

मैं किसी अन्य वस्तु (अधिमानतः शुरू में) जोड़ने के लिए कोशिश कर रहा हूँ एक JSON है - लेकिन सिर्फ यह काम करने के लिए नहीं मिल सका।

var str = '{"text":"text0","group":"0"}'; 
var obj = JSON.parse(str); 
whatever[0].put("key0",obj); 

नीचे त्रुटि हो रही है:

Uncaught TypeError: whatever[0].put is not a function

fiddle

+0

वस्तु गुण कोई ऐसा आदेश है नहीं करना चाहती है, तो जोड़ने यह "शुरू में" कोई मतलब नहीं है । – Jamiec

+0

सिर्फ एक प्रश्न, क्यों एक सरणी? –

+0

त्रुटि बहुत स्पष्ट थी। इसे कठोर होने के रूप में न लें, लेकिन आपको समझने के लिए वास्तव में कड़ी मेहनत करनी चाहिए कि दुभाषिया/कंपाइलर आपको क्या बताता है। जावास्क्रिप्ट के लिए एक कंसोल लेखन 'obj' खोलने के लिए। आपको पूरा करने से पता चलता है जो दस्तावेज – ilmirons

उत्तर

3

वस्तु पर कोई put समारोह नहीं है। इसके बजाय संपत्ति का उपयोग करें। जब आप किसी ऐसी संपत्ति को असाइन करना चाहते हैं जो अस्तित्व में नहीं है, तो यह एक नया बनाता है और इसे मान निर्दिष्ट करता है।

whatever[0]["key0"] = obj; 

क्या शुरू अधिमानतः पर से संबंधित है, वहाँ वस्तु संपत्तियों के लिए कोई आदेश नहीं है। यह एक गलत बयान है। यदि आप ऑब्जेक्ट की सरणी के बजाय ऑब्जेक्ट्स की सरणी के दृश्य से सोचने का प्रयास करना चाहते हैं, जिसमें ऑब्जेक्ट्स हैं।

कोड उदाहरण

const whatever = [{   
 
    "key1" : { "text" : "text1","group" : "1" }, 
 
    "key2" : { "text" : "text2","group" : "2" }, 
 
    "key3" : { "text" : "text3","group" : "3" } 
 
}]; 
 

 
const str = '{ "text" : "text0", "group" : "0" }'; 
 
const obj = JSON.parse(str); 
 

 
whatever[0]["key0"] = obj; 
 

 
console.log(whatever);

या का उपयोग Object#assign

const whatever = [{   
 
    "key1" : { "text" : "text1","group" : "1" }, 
 
    "key2" : { "text" : "text2","group" : "2" }, 
 
    "key3" : { "text" : "text3","group" : "3" } 
 
}]; 
 

 
const str = '{ "text" : "text0", "group" : "0" }'; 
 
const obj = JSON.parse(str); 
 

 
Object.assign(whatever[0], { key0: obj }) // this will also change the object 
 

 
console.log(whatever);

मेरा सुझाव ऑब्जेक्ट्स की एक सरणी का उपयोग करना है, अगर आप ऑर्डर के साथ कुछ चाहते हैं।

const whatever = [ 
 
    { "text" : "text1","group" : "1" }, 
 
    { "text" : "text2","group" : "2" }, 
 
    { "text" : "text3","group" : "3" } 
 
]; 
 

 
const str = '{ "text" : "text0", "group" : "0" }'; 
 
const obj = JSON.parse(str); 
 

 
// Add to the start 
 
whatever.unshift(obj); 
 
console.log(whatever); 
 

 
// Add to the end 
 
whatever.push(obj); 
 
console.log(whatever);

+0

तकनीकी रूप से गलत, "अधिमानतः शुरूआत में" आपका अंत इसे अंत में जोड़ देगा। एक सरणी के सामने संलग्न करने के लिए unshift() का उपयोग किया जाना चाहिए। – Adriani6

+0

@ Adriani6 उस भाग को नहीं देखा था। संपादित –

+0

बिल्कुल सही, अब यह एक पूरा जवाब है। – Adriani6

1

हो सकता है आप इस

की तरह कुछ

var whatever = [{   
 
"key1" : { "text" : "text1","group" : "1" }, 
 
"key2" : { "text" : "text2","group" : "2" }, 
 
"key3" : { "text" : "text3","group" : "3" } 
 
}]; 
 

 
Object.assign(whatever[0], {key4 : { "text" : "text4","group" : "4" }}); 
 

 
console.log(whatever);

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