একটি জেএস অবজেক্টে কী উপস্থিত রয়েছে কিনা তা পরীক্ষা করা হচ্ছে


88

আমার নীচে জাভাস্ক্রিপ্ট অবজেক্টটি রয়েছে:

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}

অ্যারেতে কী ব্যবহার করার অনুরোধ আছে কি এটির অনুরূপ?

testArray = jQuery.inArray("key1", obj);

কাজ করে না.

আমি কি এইভাবে আপত্তি মাধ্যমে পুনরাবৃত্তি করতে হবে?

jQuery.each(obj, function(key,val)){}

4
জেএস - অবজেক্ট আক্ষরিক :) (jQuery অবজেক্ট নয়)
ফানার

সত্য;), দেখায় যে আমার কোনও জেএস ব্যাকগ্রাউন্ড নেই - শুরু থেকেই jQuery লাইব্রেরি দিয়ে শুরু হয়েছিল এবং আমি বিশ্বাস করি যে আমার
বেসিকগুলি

obj.has("key1")আপনি ES6 ব্যবহার করছেন যদি কাজ করবে।
ডায়াবলো


4
@ ডায়াবলো আমি কি মনে করি আপনি ন্যায়বিচারের obj.hasOwnProperty("key1")পরিবর্তে বলার চেষ্টা করছেন has?
আমিনু কানো

উত্তর:


176

inঅপারেটরটি ব্যবহার করুন :

testArray = 'key1' in obj;

সিডনোট: আপনি যা পেয়েছেন তা আসলে কোনও jQuery অবজেক্ট নয়, তবে কেবল একটি সরল জাভাস্ক্রিপ্ট অবজেক্ট।


4
আমরা কি inএই মতো চেক করতে পারি ?
সাগরপঞ্চল

4
@ সাগরপঞ্চল আপনার মানে কী? এরকম কিছু testArray = !( 'key1' in obj);?
সিরকো 26'15

50

এটি কোনও jQuery অবজেক্ট নয়, এটি কেবল একটি অবজেক্ট।

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

if (obj.hasOwnProperty("key1")) {
  ...
}

আপনার এটি ব্যবহার করা উচিত নয়। এটি ধীর বলে বলা হয়। সেরা উপায় হ'ল অবজেক্টে 'কী' ব্যবহার করা
হান্নাদ রেহমান

@ অন্নাদ্রেহমান আপনি আমাকে যে ডক / নিবন্ধের উল্লেখ করেছেন সেখানে আমাকে একটি উল্লেখ করতে পারেন? :)
নবীন

4
@ ফ্যান_অফ_মারতিজন_প্রেটার আমি কঠোর ESlint নিয়ম সেট অনুসরণ করি। এটি নিয়মের একটি হিসাবে উল্লেখ করা হয়েছে। eslint.org/docs/rules/no-prototype-builtins
Hannad rehman

@ অন্নাদ্রেহমান কী-ইন-অবজেক্টটি ব্যবহার করবেন না, এটি সাধারণ ভুল হতে পারে, এটি সেরা উপায়।

ডাউনভোটেড কারণ নাল মান সহ কীগুলি সনাক্ত করার সময় এটি কাজ করে না। উদাহরণস্বরূপ, যদি আপত্তিটির মান ["কী 1"] == নাল (সুতরাং কী 1 اعتراضে উপস্থিত রয়েছে এবং এর মানটি শূন্য হয়), এটি একটি ভুল ফলাফল ফিরিয়ে দেবে যে কী 1 আপত্তিতে নয়।
ব্যবহারকারী 1258361

7
var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");

=================================================== ========================

অন্য কী এর একটি শিশু কী অ্যাক্সেস করতে

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");

4
বা কোনও কী 1 না হলে ..if (!("key1" in obj)) { console.log("no key1 in obj"); }
হাসটিগ জুসামেনস্টেলেন

3

উপরের উত্তরগুলি ভাল। তবে এটি খুব ভাল এবং দরকারী।

!obj['your_key']  // if 'your_key' not in obj the result --> true

বিবৃতিতে সংক্ষিপ্ত শৈলীর কোডের জন্য এটি ভাল:

if (!obj['your_key']){
    // if 'your_key' not exist in obj
    console.log('key not in obj');
} else {
    // if 'your_key' exist in obj
    console.log('key exist in obj');
}

দ্রষ্টব্য: আপনার কীটি শূন্যের সমান হলে বা "" আপনার "যদি" বিবৃতিটি ভুল হবে।

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

সুতরাং, কোনও আপজে কোনও কী উপস্থিত রয়েছে কিনা তা যাচাই করার সর্বোত্তম উপায় হ'ল:'a' in obj


1

আপনি এটি চেষ্টা করতে পারেন:

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}

1

map.has(key) মানচিত্রে একটি কী-এর উপস্থিতি যাচাইয়ের সর্বশেষতম ECMAScript 2015 পদ্ধতি। এই পড়ুন সম্পূর্ণ বিবরণের জন্য।


0

সবচেয়ে সহজ উপায়

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


যদি aহয় একটি ফাঁকা স্ট্রিং, শূন্য বা নাল, এটি কী'টি বিদ্যমান না থাকলেও এটি 'Obj.a এর অস্তিত্ব নেই' প্রত্যাবর্তন করবে a
মোড় হুইস্পার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.