এই উত্তরগুলির মধ্যে আকর্ষণীয় লোকেরা উভয়ই স্পর্শ করেছে Object.keys()
এবং for...of
সেগুলি কখনও সংযুক্ত হয়নি:
var map = {well:'hello', there:'!'};
for (let key of Object.keys(map))
console.log(key + ':' + map[key]);
তুমি শুধু যা করতে পারেন for...of
একটি Object
কারণ এটি একটি পুনরুক্তিকারীর না, এবং for...index
বা .forEach()
ing Object.keys()
কুশ্রী / অদক্ষ হয়।
আমি আনন্দিত যে বেশিরভাগ লোকেরা for...in
(চেকিং সহ বা চেক না করে .hasOwnProperty()
) এড়িয়ে চলেন কারণ এটিও কিছুটা অগোছালো, সুতরাং উপরের আমার উত্তর ছাড়া অন্য, আমি এখানে বলার জন্য ...
আপনি সাধারণ অবজেক্ট অ্যাসোসিয়েশনগুলি পুনরাবৃত্তি করতে পারেন! শুধু মত ব্যবহার Map
অভিনব সরাসরি ব্যবহার সঙ্গে গুলি for...of
ডেমো Chrome এবং মুক্তিযোদ্ধা ওয়ার্কিং (আমি ES6 অনুমান শুধুমাত্র)
var ordinaryObject = {well:'hello', there:'!'};
for (let pair of ordinaryObject)
//key:value
console.log(pair[0] + ':' + pair[1]);
//or
for (let [key, value] of ordinaryObject)
console.log(key + ':' + value);
যতক্ষণ না আপনি আমার শিমটি নীচে অন্তর্ভুক্ত করবেন:
//makes all objects iterable just like Maps!!! YAY
//iterates over Object.keys() (which already ignores prototype chain for us)
Object.prototype[Symbol.iterator] = function() {
var keys = Object.keys(this)[Symbol.iterator]();
var obj = this;
var output;
return {next:function() {
if (!(output = keys.next()).done)
output.value = [output.value, obj[output.value]];
return output;
}};
};
একটি সত্যিকারের মানচিত্র অবজেক্ট তৈরি না করেই এতে সুন্দর সিনট্যাকটিক চিনি নেই।
var trueMap = new Map([['well', 'hello'], ['there', '!']]);
for (let pair of trueMap)
console.log(pair[0] + ':' + pair[1]);
প্রকৃতপক্ষে, এই শিমের সাথে, আপনি যদি এখনও মানচিত্রের অন্যান্য কার্যকারিতাটির সুবিধা নিতে চান (সেগুলিতে সমস্ত ঝাঁকুনি না দিয়ে) তবে এখনও ঝরঝরে অবজেক্ট স্বরলিপিটি ব্যবহার করতে চান, যেহেতু অবজেক্টগুলি এখন পুনরাবৃত্তিযোগ্য আপনি এখন কেবল এটি থেকে একটি মানচিত্র তৈরি করতে পারেন!
//shown in demo
var realMap = new Map({well:'hello', there:'!'});
যাঁরা ঝাঁকুনি পছন্দ করেন না বা prototype
সাধারণভাবে জগাখিচুড়ি করেন না, তারা এটিকে তার মতো কিছু বলার পরিবর্তে উইন্ডোতে ফাংশনটি নির্দ্বিধায় বোধ করেন getObjIterator()
;
//no prototype manipulation
function getObjIterator(obj) {
//create a dummy object instead of adding functionality to all objects
var iterator = new Object();
//give it what the shim does but as its own local property
iterator[Symbol.iterator] = function() {
var keys = Object.keys(obj)[Symbol.iterator]();
var output;
return {next:function() {
if (!(output = keys.next()).done)
output.value = [output.value, obj[output.value]];
return output;
}};
};
return iterator;
}
এখন আপনি এটিকে কেবল একটি সাধারণ ফাংশন হিসাবে কল করতে পারেন, অন্য কোনও কিছুই প্রভাবিত হয় না
var realMap = new Map(getObjIterator({well:'hello', there:'!'}))
অথবা
for (let pair of getObjIterator(ordinaryObject))
এটি কাজ করবে না তার কোনও কারণ নেই।
ভবিষ্যতে আপনাকে স্বাগতম।