এইচটিএমএল 5 এবং জাভাস্ক্রিপ্টে লোকালস্টোরেশনের মাধ্যমে লুপিং


94

সুতরাং, আমি ভাবছিলাম যে আমি কোনও স্থানীয় অবজেক্টের মতো লোকালস্টোরেশনের মাধ্যমে লুপ করতে পারি কারণ এটির দৈর্ঘ্য রয়েছে। আমি এর মধ্য দিয়ে কীভাবে লুপ করব?

localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');

আমি যদি এটি করি তবে localStorage.lengthএটি 3সঠিক। সুতরাং আমি ধরে নেব একটি for...inলুপ কাজ করবে।

আমি এমন কিছু ভাবছিলাম:

for (x in localStorage){
    console.log(localStorage[x]);
}

তবে কোন লাভ হয়নি। কোন ধারনা?

আমার কাছে অন্য ধারণাটি ছিল এরকম কিছু

localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');

যা for...inকাজ করে।


উত্তর:


145

আপনি keyপদ্ধতিটি ব্যবহার করতে পারেন । localStorage.key(index)আয় indexতম কী (যতক্ষণ না আপনি Add or Remove কী অর্ডার বাস্তবায়ন-সংজ্ঞায়িত কিন্তু ধ্রুবক)।

for (var i = 0; i < localStorage.length; i++){
    $('body').append(localStorage.getItem(localStorage.key(i)));
}

যদি অর্ডারটি গুরুত্বপূর্ণ হয় তবে আপনি একটি JSON- সিরিয়ালযুক্ত অ্যারে সঞ্চয় করতে পারেন:

localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));

খসড়া অনুচ্ছেদে দাবি করা হয়েছে যে কাঠামোগত ক্লোনকে সমর্থন করে এমন কোনও বস্তুর মান হতে পারে। তবে এটি এখনও সমর্থিত বলে মনে হচ্ছে না।

সম্পাদনা: অ্যারে লোড করতে, এতে যুক্ত করুন, তারপরে সঞ্চয় করুন:

var words = JSON.parse(localStorage.getItem("words"));
words.push("hello");
localStorage.setItem("words", JSON.stringify(words));

অনেক ধন্যবাদ! এটিই আমি যা খুঁজছিলাম। আমি আপনার পাঠানো JSON জিনিসটি খতিয়ে দেখতে যাচ্ছি। নিখুঁত হতে হবে। এটি একটি বেবি নাম অফলাইন HTML5 আইওএস অ্যাপের জন্য।
অস্কার গডসন

দ্রুত প্রশ্ন, আমি কীভাবে সেই জেএসওনে যুক্ত করব? পছন্দ করুন, "ডোলর" এর পরে আমি কীভাবে "হ্যালো" যুক্ত করব?
অস্কার গডসন

4
আপনি রক করুন, শুধু তাকান, এটি কাজ করা উচিত। আমার পার্স ব্যবহার করা উচিত এবং স্পষ্ট নয় এমন কোনও কারণ আছে? আমি স্ট্রিং থেকে এটি পেতে এখনই ইল ব্যবহার করছি, তবে পার্স আরও ভাল / দ্রুত?
অস্কার গডসন

4
@ অস্কার, parseআরও সুরক্ষিত কারণ এটি আপনাকে কোড প্রয়োগ থেকে রক্ষা করে। এবং প্রায়শই এটি অনেক দ্রুত faster Blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31
ম্যাথু ফ্ল্যাশেন

4
@ বাগি, এটি ইনপুট যা হ'ল ডিকোড করে দেয়। একটি JSON পাঠ্যের শীর্ষ স্তরটি কোনও বস্তু বা অ্যারে হতে পারে। চেষ্টা করুনJSON.parse('["Lorem", "Ipsum", "Dolor"]').length
ম্যাথু ফ্ল্যাশেন


24

অন্যান্য সমস্ত উত্তর ছাড়াও, আপনি jQuery লাইব্রেরি থেকে ea .ch ফাংশনটি ব্যবহার করতে পারেন :

$.each(localStorage, function(key, value){

  // key magic
  // value magic

});

অবশেষে, এইটির সাথে বস্তুটি পান:

তাদেরকে JSON .parse (localStorage.getItem (localStorage.key (কী)));


4
আপনি যদি jQuery ব্যবহার করেন তবে এটি কাজ করে। $অন্যান্য গ্রন্থাগারগুলির জন্য ব্যবহৃত হয় এবং প্রায়শই এটির জন্য একটি উপাধি হিসাবে ব্যবহৃত হয় document.querySelectorAll। প্রশ্নটিকে [jquery] প্রশ্ন হিসাবে ট্যাগ করা হয় না।
আনানফায়

9

এটি ক্রোমে আমার জন্য কাজ করে:

for(var key in localStorage) {
  $('body').append(localStorage.getItem(key));
}

4
ঠিক কোন অংশ? এই স্নিপেটটি মূল প্রশ্ন অনুসারে jQuery ব্যবহার করে। আপনি কি ক্রোম জেএস কনসোল এ চেষ্টা করতে পারেন? for(var key in localStorage) { console.log(localStorage.getItem(key)); }
jtblin

@ জেটিব্লিন আমি কেবল এটি চেষ্টা করেছি, এটি ফিরে এসেছিল TypeError: Cannot call method 'toString' of null, তাই আমি ধরে নিয়েছি 'কী' বাতিল হয়ে যাচ্ছে
জুয়ান কার্লোস আলপিজার চিনচিলা

4
এটি ক্রোম, সাফারি এবং ফায়ারফক্সের সাম্প্রতিক সংস্করণগুলিতে কাজ করে
mndrix

4
@ জুয়ান কার্লোস আলপিজারচিনছিলায় কোডটিতে 'টু স্ট্রিং' নেই তাই ¯_ (ツ) _ / ¯। উপরের মন্তব্যে নির্দেশিত হিসাবে, সমস্ত সাম্প্রতিক ব্রাউজারগুলিতে দুর্দান্ত কাজ করে।
jtblin

@ জেটিব্লিন আমার মন্তব্যটি দুই বছরের পুরনো, তাই ¯_ (ツ) _ / though মাথা
উঁচু করার

1

পূর্ববর্তী উত্তরের উপর এখানে বিল্ডিং হ'ল একটি ফাংশন যা মূল মানগুলি না জেনে কী দ্বারা স্থানীয় স্টোরেজটি লুপ করবে।

function showItemsByKey() {
   var typeofKey = null;
   for (var key in localStorage) {
       typeofKey = (typeof localStorage[key]);
       console.log(key, typeofKey);
   }
}

আপনি যদি কনসোল আউটপুট পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে আপনার কোড দ্বারা যুক্ত আইটেমগুলির সকলের একটি টাইপ স্ট্রিং রয়েছে। যদিও অন্তর্নির্মিত আইটেমগুলি হয় ফাংশন {[নেটিভ কোড]} বা দৈর্ঘ্যের সম্পত্তির ক্ষেত্রে একটি সংখ্যা। আপনি টাইপফিকে ভেরিয়েবলটি কেবল স্ট্রিংগুলিতে ফিল্টার করতে ব্যবহার করতে পারেন যাতে কেবল আপনার আইটেম প্রদর্শিত হয়।

আপনি যদি কোনও সংখ্যা বা বুলিয়ানকে স্ট্রিং হিসাবে উভয়ই সঞ্চিত রাখে মান হিসাবে সংরক্ষণ করেন এমনকি এটি কাজ করে দেখুন।


1

এই সমস্ত উত্তর ব্রাউজারগুলিতে লোকালস্টোরেজ প্রয়োগের মধ্যে পার্থক্য উপেক্ষা করে। এই ডোমেনটির অবদানকারীদের তারা যে প্ল্যাটফর্মগুলি বর্ণনা করছেন তার সাথে তাদের প্রতিক্রিয়াগুলি ভারীভাবে যোগ্য করে তোলা উচিত। একটি ব্রাউজার-ব্যাপী বাস্তবায়ন https://developer.mozilla.org/en/docs/Web/API/Window/localStorage এ নথিভুক্ত করা হয়েছে এবং খুব শক্তিশালী হলেও কেবল কয়েকটি মূল পদ্ধতি রয়েছে। বিষয়বস্তুগুলির মধ্য দিয়ে লুপিং করতে পৃথক ব্রাউজারগুলির সাথে সম্পর্কিত বাস্তবায়নের একটি বোঝার প্রয়োজন।


এই উত্তরগুলির মধ্যে একটি কীভাবে ব্রাউজারে কাজ করবে না তার উদাহরণ আপনি দিতে পারেন? এটি অনেক দিন আগে ছিল তবে আমি এই উত্তরগুলি লুপিংয়ের সাথে কোনও সমস্যার কথা মনে করি না
অস্কার গডসন

আমি আমার মন্তব্যটি সামগ্রিক স্ট্রিমে যুক্ত করার ইচ্ছা নিয়েছিলাম, এই বিশেষ পোস্টটি নয় এবং এটি কিছুটা কঠোর হতে পারে। আমি ক্রস ব্রাউজার সমাধান সন্ধান করার সময় হতাশ হয়ে পড়েছিলাম। স্টিভ ইজেনবার্গের (নীচে) উদাহরণ (লোকালস্টোররে ভ্যার কী)) টাইপফকে = (লোকালস্টোরেজ [কী]) টাইপ; কনসোল.লগ (কী, টাইপফিকে); Web ওয়েবকিট বাস্তবায়নে কাজ করে না (এটি চেষ্টা করুন!)
স্টারট্রাক্স

এটি কাজ করে: (var i = 0; i <লোকালস্টোরেজ.লেন্থ; ++ i) so কনসোল.লগ (লোকালস্টোরেজ.কি (i) + ":" + লোকালস্টোর.জেটআইটিম (লোকালস্টোরেশন.কি (আই))); }
স্টারট্রাক্স

1

localStorageএকটি Object

আমরা জাভাস্ক্রিপ্ট এর মাধ্যমে / অন্য বিবরণের মতো বিবৃতিতে লুপ করতে পারি with

এবং আমরা .getItem()প্রতিটি কী (এক্স) এর মান অ্যাক্সেস করতে ব্যবহার করব ।

for (x in localStorage){
    console.log(localStorage.getItem(x));
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.