কোনও স্টোরেজ আইটেম সেট করা আছে কিনা তা কীভাবে পরীক্ষা করবেন?


288

কোনও আইটেম সেট করা আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি localStorage? বর্তমানে আমি ব্যবহার করছি

if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
    // init variable/set default variable for item
    localStorage.setItem("infiniteScrollEnabled", true);
}

2
দেখে মনে হচ্ছে, স্টোরেজ
মিটেক্স

উত্তর:


509

getItemWebStorage স্পেসিফিকেশন পদ্ধতি স্পষ্টভাবে ফেরৎ nullযদি আইটেমটি বিদ্যমান নয়:

... যদি প্রদত্ত কীটি অবজেক্টের সাথে সম্পর্কিত তালিকায় উপস্থিত না থাকে তবে এই পদ্ধতিটি অবশ্যই শূন্য হওয়া উচিত। ...

তাই আপনি পারেন:

if (localStorage.getItem("infiniteScrollEnabled") === null) {
  //...
}

এই সম্পর্কিত প্রশ্ন দেখুন:


1
আপনি localStorageএই সামান্য পরীক্ষা encapsulate আপনার নিজস্ব পদ্ধতি যুক্ত করতে পারেন? যেমন localStorage.hasItem("infiniteScrollEnabled")?
পল ডি ওয়েট

4
@ পল: হ্যাঁ, আপনি এমনকি Storage.prototypeঅবজেক্টটি বাড়িয়ে তুলতে পারেন , তবে থাম্বের নিয়ম হিসাবে আমি সর্বদা আপনার নিজস্ব নয় এমন বস্তুগুলি বিশেষত হোস্ট অবজেক্টগুলি সংশোধন না করার পরামর্শ দিই ।
সিএমএস

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

5
নোটটি ভুল - Storageইন্টারফেসের বর্তমান সংস্করণটি বিশেষত বলেছে যে মানগুলি প্রকারের DOMStringw3.org/TR/webstorage/#the-stores-interface
Alnitak

1
নোট সরানো হয়েছে। ধন্যবাদ @ টিমোথিজর্ন এবং অ্যালনিটাক
সিএমএস

45

hasOwnPropertyএটি পরীক্ষা করার জন্য আপনি পদ্ধতিটি ব্যবহার করতে পারেন

> localStorage.setItem('foo', 123)
undefined
> localStorage.hasOwnProperty('foo')
true
> localStorage.hasOwnProperty('bar')
false

ক্রোম (ম্যাক), ফায়ারফক্স (ম্যাক) এবং সাফারি এর বর্তমান সংস্করণগুলিতে কাজ করে।


2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। গৃহীত এক সেট না করে একটি সঞ্চিত "নাল" মান বিবেচনা করবে, যা ভুল।
ফ্ল্যাভিয়ান ভোলকেন

9
@ ফ্লাভিয়েন ভলকেন আপনার কাছে সঞ্চিত nullমান থাকতে পারে না । আপনার কাছে থাকতে পারে "null", তবে সেখানকার কোডটি এতে কোনও খারাপ ব্যবহার করবে না, যখন এটি একটি lengthকীতে ব্যর্থ হবে ।
কাইডো

1
কাইদো আপনি ঠিক বলেছেন, আমার এই আচরণ ছিল কারণ আমি সরাসরি সঞ্চিত ডেটা পার্স JSON.parse("null") === JSON.parse(null)করছিলাম এবং যেহেতু আমার একটি সংঘর্ষ হয়েছিল।
ফ্ল্যাভিয়ান ভোলকেন

3
নিম্নলিখিত ESLint ত্রুটিটি পেয়েছেন: "লক্ষ্য অবজেক্ট.স্লিন্ট (কোনও প্রোটোটাইপ-বিল্টিনস) থেকে অবজেক্ট.প্রোটোটাইপ পদ্ধতি 'hasOwNProperty' অ্যাক্সেস করবেন না"
rfdc

পৃষ্ঠার লোডে foo সেট না করা থাকলে এটি কাজ করবে না এবং আপনি foo দিয়ে কিছু করতে চান। আমি মনে করি যে প্রশ্নকর্তা এটিই পেয়েছিলেন, আপনি কীটির fooউপস্থিতি আছে কিনা তা পরীক্ষা করতে চান , ফু এর কোনও মান আছে কিনা। আমার এই পরিস্থিতি রয়েছে, যেখানে ক্লিক ক্লিক ইভেন্টটি .setitemআইটেমের চারদিকে ভিত্তি করে যুক্তি দিয়ে ট্রিগার করে, তবে আমি সেটআপ না করা পর্যন্ত এটি কাজ করবে না এবং আমি foo- এর অবস্থা (মান 1 বা মান 2) না জেনে সেট সেট করতে পারি না। অন্য কথায়, চেক foo প্রস্থান করে তারপরে এটি মান 1 তে সেট করুন যদি এটি দুর্ঘটনাক্রমে মান 2 ওভাররাইটিং না করে থাকে।
রিন এবং লেন

22

সংক্ষিপ্ততম উপায় হ'ল ডিফল্ট মান ব্যবহার করা, যদি কী স্টোরেজে না থাকে:

var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */

4

আপনি যদি অপরিশোধিত পরীক্ষা করতে চান তবে আপনি এটিও দেখতে পারেন:

if (localStorage.user === undefined) {
    localStorage.user = "username";
}

getItem একটি পদ্ধতি যা মান খুঁজে পাওয়া না গেলে নাল ফেরায়।


3
if(!localStorage.hash) localStorage.hash = "thinkdj";

অথবা

var secret =  localStorage.hash || 42;

জাভাস্ক্রিপ্ট প্রথম অ-নাল বা ধনাত্মক মানের উদাহরণ দেয়: [নাল || "abc"] "abc" ফিরিয়ে দেবে [2 || 5] 2 ফিরে আসবে [0 || 5] ফিরে আসবে 5 [1 || 5] 1 ইত্যাদি ফিরে আসবে তাই উপরের কোডটি কাজ করে।
দীপক থমাস

2

সত্যের জন্য

localStorage.infiniteScrollEnabled = 1;

মিথ্যা

localStorage.removeItem("infiniteScrollEnabled")

উপস্থিতি যাচাই করুন

if (localStorage[""infiniteScrollEnabled""]) {
  //CODE IF ENABLED
}

1

লোকালস্টোরেজে আইটেমের ধরণের জন্য আপনার পরীক্ষা করা উচিত

if(localStorage.token !== null) {
   // this will only work if the token is set in the localStorage
}

if(typeof localStorage.token !== 'undefined') {
  // do something with token
}

if(typeof localStorage.token === 'undefined') {
  // token doesn't exist in the localStorage, maybe set it?
}

1

কীভাবে একটি আইটেমের একটির অস্তিত্ব পরীক্ষা করতে পারে localStorage? এই পদ্ধতিটি ইন্টারনেট এক্সপ্লোরারে কাজ করে।

<script>
    try{
        localStorage.getItem("username");
    }catch(e){
        alert("we are in catch "+e.print);
    }
</script>

2
এটি অবশ্যই করা উচিত নয়; getItem কেবল বিদ্যমান কীগুলির জন্য নাল ফেরায়।
এরিকলও


try | catchআইটেমটি বিশ্লেষণ করার সময় অবশ্যই আপনার উচিত ।
আব্দুল সাদিক ইয়ালসিন

0
localStorage['root2']=null;

localStorage.getItem("root2") === null //false

পরিকল্পনার স্ক্যান করা কি আরও ভাল?

localStorage['root1']=187;
187
'root1' in localStorage
true

0

আমি প্রস্তাব করতে পারি সেরা এবং নিরাপদ উপায় হ'ল এটি,

if(Object.prototype.hasOwnProperty.call(localStorage, 'infiniteScrollEnabled')){
    // init variable/set default variable for item
    localStorage.setItem("infiniteScrollEnabled", true);
}

এটি ESLint এর no-prototype-builtinsনিয়মের মধ্য দিয়ে যায় ।


0

আমি আমার প্রকল্পে ব্যবহার করেছি এবং আমার জন্য নিখুঁতভাবে কাজ করি

var returnObjName= JSON.parse(localStorage.getItem('ObjName'));
if(returnObjName && Object.keys(returnObjName).length > 0){
   //Exist data in local storage
}else{
  //Non Exist data block
}

0

সহজ উপায়

if(localStorage.test){
console.log("now defined");
}
else{
console.log("undefined");
localStorage.test="defined;"
}

কিভাবে এটা কাজ করে

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


-2

এই কোড ব্যবহার করে দেখুন

if (localStorage.getItem("infiniteScrollEnabled") === null) {

} else {

}

কর বা না কর। কোন চেষ্টা নেই". একটি উত্তরের উত্তরটি সর্বদা কেবল ওপি-র জন্যই নয়, ভবিষ্যতে এসও-তে আগত দর্শকদের জন্য কী করা হয়েছিল এবং কেন এটি এমনভাবে করা হয়েছিল তার একটি ব্যাখ্যা সবসময় থাকবে।
জে ব্লানচার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.