আমি জেএসওএন অবজেক্টে উপাদানগুলির ক্রমটি মূল ক্রম নয় বলে লক্ষ্য করেছি।
জেএসওএন তালিকার উপাদানগুলির সম্পর্কে কী? তাদের আদেশ কি বজায় রাখা হয়?
আমি জেএসওএন অবজেক্টে উপাদানগুলির ক্রমটি মূল ক্রম নয় বলে লক্ষ্য করেছি।
জেএসওএন তালিকার উপাদানগুলির সম্পর্কে কী? তাদের আদেশ কি বজায় রাখা হয়?
উত্তর:
হ্যাঁ, জেএসএন অ্যারেতে উপাদানগুলির ক্রম সংরক্ষণ করা হয়েছে। আরএফসি 7159 থেকে - জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (জেএসএন) ডেটা ইন্টারচেঞ্জ ফর্ম্যাট (জোর দেওয়া খনি):
একটি অবজেক্ট শূন্য বা আরও বেশি নাম / মান জোড়ের একটি আনর্ডারড সংগ্রহ, যেখানে একটি নাম একটি স্ট্রিং এবং মান একটি স্ট্রিং, সংখ্যা, বুলিয়ান, নাল, বস্তু বা অ্যারে।
একটি বিন্যাস একটি হল আদেশ শূন্য বা তার বেশি মূল্যবোধের অনুক্রম।
"অবজেক্ট" এবং "অ্যারে" পদটি জাভাস্ক্রিপ্টের সম্মেলনগুলি থেকে এসেছে।
কিছু বাস্তবায়ন জেএসওএন অবজেক্টগুলির ক্রমও সংরক্ষণ করে, তবে এটির নিশ্চয়তা নেই।
একটি অ্যারেতে উপাদানগুলির ক্রম ( []
) বজায় রাখা হয়। কোনও "অবজেক্ট" ( {}
) তে উপাদানের ক্রম (নাম: মান জোড়) নয়, এবং তাদের জন্য "জম্পল" হওয়া স্বাভাবিক, যদি জেএসওএন ফর্ম্যাটর / পার্সার নিজেই না করে থাকে তবে ভাষা-নির্দিষ্ট বস্তুর দ্বারা (অভিধান, অভ্যন্তরীণ উপস্থাপনা হিসাবে ব্যবহৃত হয় এমন এনএসডিকোরিয়াস, হ্যাশটেবল ইত্যাদি
ব্যবহারিকভাবে বলতে গেলে, কীগুলি যদি NaN টাইপের হয় তবে ব্রাউজারটি ক্রম পরিবর্তন করবে না।
নিম্নলিখিত স্ক্রিপ্টটি "ওয়ান", "দুই", "তিন" আউটপুট দেবে:
var foo={"3":"Three", "1":"One", "2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
যেখানে নিম্নলিখিত স্ক্রিপ্টটি "তিন", "এক", "দুই" আউটপুট দেবে:
var foo={"@3":"Three", "@1":"One", "@2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
কিছু জাভাস্ক্রিপ্ট ইঞ্জিন কী সন্নিবেশ ক্রমে রাখে। উদাহরণস্বরূপ, ভি 8, স্বাক্ষরযুক্ত 32-বিট সংখ্যার হিসাবে পার্স করা যায় এমন কীগুলি ব্যতীত সমস্ত কী সন্নিবেশ ক্রমে রাখে ।
এর অর্থ হ'ল আপনি যদি নিম্নলিখিতগুলির মধ্যে দুটি চালান:
var animals = {};
animals['dog'] = true;
animals['bear'] = true;
animals['monkey'] = true;
for (var animal in animals) {
if (animals.hasOwnProperty(animal)) {
$('<li>').text(animal).appendTo('#animals');
}
}
var animals = JSON.parse('{ "dog": true, "bear": true, "monkey": true }');
for (var animal in animals) {
$('<li>').text(animal).appendTo('#animals');
}
আপনি ক্রমাগত ক্রম, কুকুর , ভালুক এবং বানর ক্রোমে পাবেন, যা ভি 8 ব্যবহার করে। নোড.জেএসও ভি 8 ব্যবহার করে। আপনার হাজার হাজার আইটেম থাকলেও এটি সত্য হবে। অন্যান্য জাভাস্ক্রিপ্ট ইঞ্জিন সহ ওয়াইএমএমভি।
"একটি জেএসওএন তালিকার উপাদানগুলির ক্রম বজায় রাখা হয়?" একটি ভাল প্রশ্ন না। আপনাকে জিজ্ঞাসা করতে হবে "যখন করছেন তখন কি কোনও জেএসওএন তালিকার উপাদানগুলির ক্রম বজায় রাখা হয় [...]?" ফেলিক্স কিং যেমন উল্লেখ করেছেন, জেএসএন একটি পাঠ্য ডেটা ফর্ম্যাট। এটি কোনও কারণ ছাড়াই পরিবর্তিত হয় না। কোনও (জাভাস্ক্রিপ্ট) অবজেক্ট দিয়ে জেএসএন স্ট্রিংকে বিভ্রান্ত করবেন না।
আপনি সম্ভবত অপারেশন সম্পর্কে কথা বলছেন JSON.stringify(JSON.parse(...))
। এখন উত্তর: এটি বাস্তবায়নের উপর নির্ভর করে। JSON পার্সারগুলির 99% * বস্তুর ক্রম বজায় রাখে না এবং অ্যারের ক্রম বজায় রাখে না, তবে আপনি জেএসওএন ব্যবহার করতে পারেন এমন কিছু সঞ্চয় করতে
{
"son": "David",
"daughter": "Julia",
"son": "Tom",
"daughter": "Clara"
}
এবং এমন একটি পার্সার ব্যবহার করুন যা বস্তুর ক্রম বজায় রাখে।
* সম্ভবত আরও :)