এইচটিএমএল 5 স্থানীয় স্টোরেজ কীগুলি পান


145

আমি কীভাবে সমস্ত মূল মান পেতে পারি তা ভাবছি localStorage


আমি একটি সাধারণ জাভাস্ক্রিপ্ট লুপ দিয়ে মানগুলি পুনরুদ্ধার করার চেষ্টা করেছি

for (var i=1; i <= localStorage.length; i++)  {
   alert(localStorage.getItem(i))
}

তবে এটি কেবল তখনই কাজ করে যখন কীগুলি প্রগতিশীল সংখ্যা হয়, 1 থেকে শুরু হয়।


সমস্ত উপলব্ধ ডেটা প্রদর্শনের জন্য আমি কীগুলি কীভাবে পাব?



সম্ভাব্য সদৃশ stackoverflow.com/questions/3138564/...
kubetz

কেন এই লুপটি আই = 1 দিয়ে শুরু হবে এবং আই = লোকালস্টোরেজ.মেন্থ দিয়ে শেষ হবে? ব্রাউজারগুলিতে আমি (ক্রোম) পরীক্ষা করেছি, লুপটি 0 থেকে শুরু হওয়া উচিত এবং লোকালস্টোরেজ.লেন্থে শেষ হওয়া উচিত - 1 ...
লুই এলসি

@ লুইসএলসি কারণ আমি আমার কীগুলির জন্য প্রগতিশীল সংখ্যা ব্যবহার করছিলাম (একটি সম্পর্কিত সম্পর্কিত ডাটাবেজে প্রাথমিক কী হিসাবে)।
সাইমন

উত্তর:


35

ES2017 এ আপনি ব্যবহার করতে পারেন:

Object.entries(localStorage)

5
এবং আমি অনুমান Object.keys()হিসাবে কাজ হিসাবে অনুমান ?

292
for (var key in localStorage){
   console.log(key)
}

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

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
  console.log( localStorage.getItem( localStorage.key( i ) ) );
}

এই লিঙ্কে .... ইন stackoverflow.com/questions/15313606/... ... কেন তারা এক্সেস localStorage এই সমস্ত অদ্ভুত পদ্ধতি ব্যবহার করা হয়?

2
"সেরা / নিরাপদ" কোডের জন্য বেশ কয়েকটি প্রশ্ন: ১) কেন localStorage.lengthএটি সরাসরি ঘোষণা করবেন এবং ব্যবহার করবেন না? 2) কেন এটি লুপের ভিতরে ঘোষণা করবেন? 3) কেন ++iবেশি পছন্দ করা হয় i++?
লুসিও বার্গম্যান

8
আপনি কি আসলেই চেষ্টা করেছিলেন? ++iসুনির্দিষ্টভাবে লুপটি শুরু করে নাi = 1 । প্রথম বন্ধনের অভ্যন্তরে তৃতীয় ভাবটি প্রতিটি পুনরাবৃত্তির পরে মূল্যায়ন করা হয়। i++এবং ++iউভয়েরই ঠিক একই প্রভাব রয়েছে i। পার্থক্য যে ++iমূল্যায়ণ নতুন মান iবৃদ্ধিশীল পর, যেহেতু i++মূল্যায়ন মূল্য i সামনে বৃদ্ধিশীল। এখানে একেবারেই কোনও পার্থক্য নেই, কারণ আমরা যতটা যত্ন নিই তা হ'ল ইনক্রিমেন্টিংয়ের পার্শ্ব-প্রতিক্রিয়া i, অভিব্যক্তির মান নয়।
কেভিন এনিস

33
এটি লক্ষণীয় যে আজকাল Object.keys(localStorage)এই দৃশ্যের জন্য পুরোপুরি ভাল কাজ করে, যতক্ষণ না আপনার আইআই <9. সমর্থন করতে হবে না
অ্যাড্রিয়ান

2
এছাড়াও লক্ষণীয় দরকারী যে আপনি যদি কীটির নাম নিজেই প্রদর্শন করতে চান তবে আপনি localStorage.key( i )অংশটি দিয়ে এটি করতে পারেন ।
শান কলম্বো

30

আমি এটির মতো সহজেই একটি দৃশ্যমান অবজেক্ট তৈরি করতে চাই।

Object.keys(localStorage).reduce(function(obj, str) { 
    obj[str] = localStorage.getItem(str); 
    return obj
}, {});

আমি কুকিগুলির সাথেও একই জিনিস করি।

document.cookie.split(';').reduce(function(obj, str){ 
    var s = str.split('='); 
    obj[s[0].trim()] = s[1];
    return obj;
}, {});

1
আমি বস্তুর উপর পুনরাবৃত্তি যে স্টাইল পছন্দ।
জোনাথন স্টেলওয়াগ

12
function listAllItems(){  
    for (i=0; i<=localStorage.length-1; i++)  
    {  
        key = localStorage.key(i);  
        alert(localStorage.getItem(key));
    }  
}

9

আপনি localStorage.key(index)স্ট্রিং প্রতিনিধিত্ব ফিরিয়ে ফাংশনটি ব্যবহার করতে পারেন , indexআপনি যে পুনরুদ্ধার করতে চান নবম অবজেক্টটি।


7

যদি ব্রাউজারটি এইচটিএমএল 5 লোকালস্টোরেশন সমর্থন করে তবে এটি সক্ষম করে অ্যারে.প্রোটোটাইপ.ম্যাপটিও প্রয়োগ করা উচিত:

Array.apply(0, new Array(localStorage.length)).map(function (o, i) {
    return localStorage.key(i);
})

আপনি new Array(this.localStorage.length).fill(0)ইমো প্রয়োগের চেয়ে কিছুটা কম হ্যাকি অনুভব করতে পারেন ।
লেনি

6

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

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
  console.log( localStorage.key( i ) + ": " + localStorage.getItem( localStorage.key( i ) ) );
}

এটি "কী: মান" বিন্যাসে ডেটা লগ করবে

(কেভিন: আপনি চাইলে এই উত্তরটি আপনার উত্তরের মধ্যে নিতে দ্বিধা বোধ করবেন!)


1

এটি স্থানীয় স্টোরেজে সমস্ত কী এবং মান মুদ্রণ করবে:

ES6:

for (let i=0; i< localStorage.length; i++) {
    let key = localStorage.key(i);
    let value = localStorage[key];
    console.log(`localStorage ${key}:  ${value}`);
}

1

আপনি এর মতো কী এবং মান পেতে পারেন:

for (let [key, value] of Object.entries(localStorage)) {
  console.log(`${key}: ${value}`);
}

0

আমি কেভিনের সাথে তার সেরা উত্তরটির সাথে একমত হয়েছি তবে মাঝে মাঝে যখন আপনার স্থানীয় স্টোরেজে একই মান সহ বিভিন্ন কী থাকে উদাহরণস্বরূপ আপনি চান আপনার জনসাধারণের ব্যবহারকারীরা তারা তাদের ঝুড়িতে কতবার তাদের আইটেম যুক্ত করেছে তা দেখতে আপনি তাদের দেখাতে হবে পাশাপাশি বারের সংখ্যা আপনি এটি ব্যবহার করতে পারেন:

var set = localStorage.setItem('key', 'value');
var element = document.getElementById('tagId');

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
  element.innerHTML =  localStorage.getItem(localStorage.key(i)) + localStorage.key(i).length;
}

-1

যারা উল্লেখ করেছেন তাদের জন্য Object.keys(localStorage)... কারণ এটি ফায়ারফক্সে কাজ করবে না (হাস্যকরভাবে কারণ ফায়ারফক্স অনুমানের প্রতি বিশ্বস্ত)। এই বিবেচনা:

localStorage.setItem("key", "value1")
localStorage.setItem("key2", "value2")
localStorage.setItem("getItem", "value3")
localStorage.setItem("setItem", "value4")

কী, গেট আইটেম এবং সেট আইটেম হ'ল প্রোটোটাইপাল পদ্ধতিগুলি Object.keys(localStorage)কেবল ফিরে আসবে ["key2"]

আপনি এই জাতীয় কিছু করতে ভাল:

let t = [];
for (let i = 0; i < localStorage.length; i++) {
  t.push(localStorage.key(i));
}

@ ডারক্রাম যেহেতু ফায়ারফক্স অনুমানগুলি সঠিকভাবে অনুসরণ করে, কী, গেট আইটেম এবং সেট আইটেমটি যদি আপনি ব্যবহার করেন তবে অনুপস্থিত object.keys()হবে ... আমি সেটির প্রতিফলিত করতে আমার উত্তর আপডেট করব।
মাইক র‌্যাটক্লিফ

কেবল স্থানীয় স্টোরেজের জন্য অনুমিতটি পড়ুন এবং আপনি যা উল্লেখ করেছেন তা আমি দেখতে পাচ্ছি না।
ডার্ক্রাম

এবং অবজেক্ট.কিজ () এর জন্য অনুমানটি পড়ুন দেখে মনে হচ্ছে ফায়ারফক্স হ'ল আপনি যা বলছেন তা যদি সত্য হয় তবে তা হ্রাস পাবে না।
ডার্ক্রাম

@ ডারক্রাম এইচটিএমএল.স্পেক.ওয়াত.ওইউ.ইগ.আর / মাল্টিপেজ/২ দেখুন এবং আপনি দেখতে পাচ্ছেন যে আইপিএলটি আইপিএলটি সংজ্ঞায়িত করে [Exposed=Window]। আমি বর্ণিত আচরণে এর ফলাফল results যদি এটির সাথে নির্দিষ্ট করা হয় [Exposed=Window,OverrideBuiltins]তবে আমরা যে আচরণটি প্রত্যাশা করি তা দেবে তবে অনুমানটি নির্দিষ্ট করে নাOverrideBuiltins । আপনি এটি সম্পর্কে WHWG / এইচটিএমএলএর একটি আলোচনা দেখতে পাবেন: github.com/
মাইক র্যাটক্লিফ

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

-3

আমরা নাম দিয়েও পড়তে পারি।

বলুন আমরা এই জাতীয় নামের সাথে ব্যবহারকারীর নাম সংরক্ষণ করেছি

localStorage.setItem('user', user_Detail);

তারপরে আমরা এটি ব্যবহার করে পড়তে পারি

localStorage.getItem('user');

আমি এটি ব্যবহার করেছি এবং এটি মসৃণ কাজ করছে, লুপের জন্য কোনও প্রয়োজন নেই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.