যদি আমার মতো একটি বিষয় থাকে:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
যদি আমি আগেই জানতে না পারি যে তালিকাটি 'গ' এর উপরে চলে যায়, বস্তুর মাধ্যমে লুপিং ব্যতীত, অবজেক্টে শেষ আইটেমটি পাওয়ার কোনও উপায় আছে (যেমন 'carrot')?
যদি আমার মতো একটি বিষয় থাকে:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
যদি আমি আগেই জানতে না পারি যে তালিকাটি 'গ' এর উপরে চলে যায়, বস্তুর মাধ্যমে লুপিং ব্যতীত, অবজেক্টে শেষ আইটেমটি পাওয়ার কোনও উপায় আছে (যেমন 'carrot')?
উত্তর:
নং অর্ডার জেএসওএন এবং সর্বাধিক অন্যান্য কী-মান ডেটা স্ট্রাকচারে গ্যারান্টিযুক্ত নয়, সুতরাং শেষ আইটেমটি কখনও কখনও কখনও কখনও হতে পারে carrotএবং অন্য সময়েও হতে পারে banana। আপনি যদি প্রয়োজন ক্রম উপর নির্ভর, আপনার সেরা বাজি অ্যারে সঙ্গে যেতে হয়। কী-মান ডেটা স্ট্রাকচারের শক্তি বস্তুর আইটেমটি keysপেতে সক্ষম না হয়ে তাদের দ্বারা মান অ্যাক্সেসের nthমধ্যে থাকে।
[]তবে এটি সত্যই একটি বস্তু। জেএসের মতো সাহসী অ্যারে নেই, অ্যারেগুলিকে অ্যাক্সেস এবং ক্রম সূচিবদ্ধ করা হয়েছে; অবজেক্টগুলির অ্যাসোসিয়েটিভ সম্পত্তি অ্যাক্সেস রয়েছে, অ-অনুক্রমিক।
হ্যাঁ, ব্যবহার করার একটি উপায় আছে Object.keys(obj)। এটি এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে :
var fruitObject = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
Object.keys(fruitObject); // this returns all properties in an array ["a", "b", "c"]
আপনি যদি শেষ অবজেক্টের মান পেতে চান তবে আপনি এটি করতে পারেন:
fruitObject[Object.keys(fruitObject)[Object.keys(fruitObject).length - 1]] // "carrot"
Object.keysদুর্দান্ত কাজ করে। এটি IE8 এবং 7 এ কাজ করার জন্য একটি উপায় খুঁজে বের করতে হবে, কারণ এটি কেবলমাত্র আইই 9 তে প্রদর্শিত হয়েছিল।
Object.keysসম্পত্তি এবং প্রকৃতপক্ষে এলোমেলোভাবে অর্ডার করা হয়েছে তা খুঁজে বার করতে চেষ্টা করলাম । আপনার ব্রাউজার কনসোলে লগ-ইন করার সময় প্রকৃত সম্পত্তি অর্ডার প্রদর্শিত হয় তার থেকে আলাদা। ব্রাউজার কনসোলে লগইন করার পরে, বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে পুনরায় সাজানো হয় এবং বর্ণানুক্রমিকভাবে / সংখ্যায় প্রদর্শিত হয়, যা অবশ্যই কিছু বিভ্রান্তির কারণ হয়ে থাকে।
last = Object.keys(obj)[Object.keys(obj).length-1];
যেখানে আপত্তি আপনার বিষয়
'c'এই ক্ষেত্রে) পায় তবে প্রশ্নটি এমনভাবে শব্দযুক্ত যা বোঝায় যে প্রশ্নকারী সর্বশেষ মানটি ( 'carrot') খুঁজছেন। এটি ইতিমধ্যে এমন কিছু যুক্ত করে না যা ইতিমধ্যে ক্রিস্টিনা স্টেফানোভার জবাব
var myObj = {a: 1, b: 2, c: 3}, lastProperty;
for (lastProperty in myObj);
lastProperty;
//"c";
for (firstProperty in myObj) { break; };
ES6 এর ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট সিনট্যাক্স ব্যবহার করে সমাধান:
var temp = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var { [Object.keys(temp).pop()]: lastItem } = temp;
console.info(lastItem); //"carrot"
আপনি এটি চেষ্টা করতে পারেন। এটি শেষ আইটেম সংরক্ষণ করবে। এখানে আপত্তি অ্যারে রূপান্তর করা প্রয়োজন। তারপরে অ্যারে pop()ফাংশনটি ব্যবহার করুন যা রূপান্তরিত অ্যারে থেকে শেষ আইটেমটি ফিরে আসবে।
var obj = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var last = Object.keys(obj).pop();
console.log(last);
console.log(obj[last]);
জাভাস্ক্রিপ্টে অবজেক্ট বৈশিষ্ট্যের ক্রম হিসাবে, আমি কেবল এই উত্তরের সাথে লিঙ্ক করব:
উপাদানগুলি একটি "জন্য (… ইন…)" লুপে অর্ডার করে
বিশেষত:
ইসমাস্ক্রিপ্টের সমস্ত আধুনিক বাস্তবায়নগুলি তাদের সংজ্ঞা অনুসারে ক্রম অনুযায়ী বস্তুর বৈশিষ্ট্যগুলির মাধ্যমে পুনরাবৃত্তি করে
সুতরাং এখানে অন্য প্রতিটি উত্তর সঠিক, সম্পত্তি আপত্তি করার জন্য কোনও অফিসিয়াল গ্যারান্টিযুক্ত অর্ডার নেই। তবে অনুশীলনে রয়েছে (এমন কোনও বাগ বাদ দেওয়া যা প্রাকৃতিকভাবে নির্দিষ্টভাবে নির্ধারিত আচরণ এমনকি সেট-ইন-পাথর পর্যন্ত তৈরি করতে পারে)।
তদ্ব্যতীত, অবজেক্ট বৈশিষ্ট্যের ডি-ফ্যাক্টো গণনা ক্রম ভবিষ্যতের EMCAScript স্পেসে কোডযুক্ত হওয়ার সম্ভাবনা রয়েছে।
তবুও, এই সময়ে আমি এগুলির চারপাশে কোডটি লিখব না, বেশিরভাগ কারণেই বস্তুর সম্পত্তি অর্ডার নিয়ে কাজ করার জন্য কোনও বিল্ট-ইন সরঞ্জাম নেই tools আপনি নিজের লেখা লিখতে পারেন, তবে শেষ পর্যন্ত আপনি সর্বদা তার সামগ্রীর অবস্থান নির্ধারণের জন্য কোনও সামগ্রীর উপরে লুপ করে যাবেন।
যেমন আপনার প্রশ্নের উত্তর হ'ল না , কোনও বস্তুর মধ্য দিয়ে লুপিং ছাড়া উপায় নেই।
আদেশের বিষয়টি বিবেচনায় থাকলে কোনও অ্যারে ব্যবহার করুন, কোনও বস্তু আক্ষরিক নয়।
list = ['apple', 'banana', 'carrot'];
বা কিছু
dict = {
'a' : ['apple', 'awesome'],
'b' : ['best friend']
};
অথবা এমনকি..
dict = [{letter:'a', list:['apple', 'awesome']},{letter:'b', list:['best friend']}];
এর জন্য কীগুলি যাতে dictকোনওভাবেই হয় সেটির গ্যারান্টি নেই।
অন্যান্য উত্তরগুলি আমার জন্য এটি পরিচ্ছন্ন।
let animals = {
a: 'dog',
b: 'cat',
c: 'bird'
}
let lastKey = Object.keys(animals).pop()
let lastValue = animals[Object.keys(animals).pop()]
JSArray = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
document.write(Object.keys(JSArray)[Object.keys(JSArray).length-1]);// writes 'c'
document.write(JSArray[Object.keys(JSArray)[Object.keys(JSArray).length-1]]); // writes 'carrot'
আপনি এই Object.values()পদ্ধতিটি ব্যবহার করতে পারেন :
Object.values(fruitObject)[Object.values(fruitObject).length - 1]; // "carrot"
জাভাস্ক্রিপ্টে মানচিত্র অবজেক্ট । এটি ইতিমধ্যে এখন প্রায় 3 বছর পুরানো। এই মানচিত্রের ডেটা স্ট্রাকচারটি ক্রমটি ধরে রেখেছে যাতে আইটেমগুলি .োকানো হয়। এই শেষ আইটেমটি পুনরুদ্ধার করার ফলে মানচিত্রে সর্বশেষতম আইটেম .োকানো হবে
objআপনার উদ্দেশ্য হতে দিন । এক্সিকিউট:
(_ => _[Object.keys(_).pop()])( obj )
বর্ণমালা অনুসারে আপনি যদি শেষ কীটি বোঝাতে চান তবে আপনি (গ্যারান্টিযুক্ত) করতে পারেন:
var obj = { 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' };
var keys = Object.keys(obj);
keys.sort();
var lastkey = keys.pop() // c
var lastvalue = obj[lastkey] // 'carrot'