javascript - array in java




একটি কী জাভাস্ক্রিপ্ট বস্তুর মধ্যে একটি কী বিদ্যমান কিনা তা পরীক্ষা করা হচ্ছে? (13)

কিভাবে একটি জাভাস্ক্রিপ্ট বস্তু বা অ্যারে একটি নির্দিষ্ট কী বিদ্যমান কিনা তা আমি কিভাবে পরীক্ষা করব?

যদি একটি কী উপস্থিত না থাকে এবং আমি এটিকে অ্যাক্সেস করার চেষ্টা করি, তা কি মিথ্যা হবে? অথবা একটি ত্রুটি নিক্ষেপ?


ES6 সমাধান

Array#some এবং Object.keys ব্যবহার করে। যদি প্রদত্ত কী বস্তুতে বিদ্যমান থাকে বা মিথ্যা না থাকে তবে এটি সত্য ফিরে আসবে।

var obj = {foo: 'one', bar: 'two'};
    
function isKeyInObject(obj, key) {
    var res = Object.keys(obj).some(v => v == key);
    console.log(res);
}

isKeyInObject(obj, 'foo');
isKeyInObject(obj, 'something');

এক লাইন উদাহরণ।

console.log(Object.keys({foo: 'one', bar: 'two'}).some(v => v == 'foo'));


এখানে একটি সহায়ক ফাংশন আমি বেশ দরকারী খুঁজে

এই keyExists(key, search) সহজে বস্তু বা অ্যারে মধ্যে একটি কী সন্ধান করতে ব্যবহার করা যেতে পারে!

আপনি যে কীটি সন্ধান করতে চান তা কেবল এটি পাস করুন এবং আপনি এটি সন্ধান করতে চান obj (বস্তু বা অ্যারে) সন্ধান করুন।

function keyExists(key, search) {
    if (!search || (search.constructor !== Array && search.constructor !== Object)) {
        return false;
    }
    for (var i = 0; i < search.length; i++) {
        if (search[i] === key) {
            return true;
        }
    }
    return key in search;
}

এটি কিভাবে ব্যবহার করতে:

Arrays মধ্যে কী জন্য অনুসন্ধান করা হচ্ছে

keyExists('apple', ['apple', 'banana', 'orange']); // true
keyExists('fruit', ['apple', 'banana', 'orange']); // false

বস্তুর মধ্যে কী জন্য অনুসন্ধান করা হচ্ছে

keyExists('age', {'name': 'Bill', 'age': 29 }); // true
keyExists('title', {'name': 'Jason', 'age': 29 }); // false

এটি বেশ নির্ভরযোগ্য হয়েছে এবং ভাল ক্রস ব্রাউজার কাজ করে।


আমরা ব্যবহার করতে পারেন - hasOwnProperty.call(obj, key);

underscore.js উপায় -

if(_.has(this.options, 'login')){
  //key 'login' exists in this.options 
}

_.has = function(obj, key) {
  return hasOwnProperty.call(obj, key);
};

lodash জন্য তাদের প্রকল্পে অন্তর্ভুক্ত রয়েছে:
"Deep" কীগুলি পেতে চেষ্টা করে এমন একটি লোডশ _.get পদ্ধতি রয়েছে:

বস্তুর পথে মান পায়। যদি সমাধান করা মানটি অনির্ধারিত হয়, তবে ডিফল্ট ভ্যালুটি তার জায়গায় ফেরত পাঠানো হয়।

var object = { 'a': [{ 'b': { 'c': 3 } }] };

console.log(
  _.get(object, 'a[0].b.c'),           // => 3
  _.get(object, ['a', '0', 'b', 'c']), // => 3
  _.get(object, 'a.b.c'),              // => undefined 
  _.get(object, 'a.b.c', 'default')    // => 'default'
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

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


আপনি যদি underscore.js লাইব্রেরি ব্যবহার করেন তবে অবজেক্ট / অ্যারের ক্রিয়াকলাপগুলি সহজ হয়ে যায়।

আপনার ক্ষেত্রে _.has পদ্ধতি ব্যবহার করা যেতে পারে। উদাহরণ:

yourArray = {age: "10"}

_.has(yourArray, "age")

সত্য ফিরে

কিন্তু,

_.has(yourArray, "invalidKey")

মিথ্যা ফেরত


এই উদাহরণ defferent উপায় মধ্যে পার্থক্য প্রদর্শন করতে পারেন। আপনি আপনার প্রয়োজনের জন্য সঠিক চয়ন করতে সাহায্য করবে আশা করি:

// Lets create object `a` using create function `A`
function A(){};
A.prototype.onProtDef=2;
A.prototype.onProtUndef=undefined;
var a=new A();
a.ownProp = 3;
a.ownPropUndef = undefined;

// Let's try different methods:

a.onProtDef; // 2
a.onProtUndef; // undefined
a.ownProp; // 3
a.ownPropUndef; // undefined
a.whatEver; // undefined
a.valueOf; // ƒ valueOf() { [native code] }

a.hasOwnProperty('onProtDef'); // false
a.hasOwnProperty('onProtUndef'); // false
a.hasOwnProperty('ownProp'); // true
a.hasOwnProperty('ownPropUndef'); // true
a.hasOwnProperty('whatEver'); // false
a.hasOwnProperty('valueOf'); // false

'onProtDef' in a; // true
'onProtUndef' in a; // true
'ownProp' in a; // true
'ownPropUndef' in a; // true
'whatEver' in a; // false
'valueOf' in a; // true (on the prototype chain - Object.valueOf)

Object.keys(a); // ["ownProp", "ownPropUndef"]

এটা undefined ফিরে আসবে।

var aa = {hello: "world"};
alert( aa["hello"] );      // popup box with "world"
alert( aa["goodbye"] );    // popup box with "undefined"

undefined একটি বিশেষ ধ্রুবক মান। সুতরাং আপনি বলতে পারেন, উদাহরণস্বরূপ

// note the three equal signs so that null won't be equal to undefined
if( aa["goodbye"] === undefined ) {
    // do something
}

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

// this works even if you have {"goodbye": undefined}
if( "goodbye" in aa ) {
    // do something
}

এটি একটি পুরানো প্রশ্ন কিন্তু আমি উত্তর দেবার জন্য দেরিতে কখনও অনুমান করি না।

আপনি একটি বস্তু "পণ্য" এবং দুটি আইটেম আছে কল্পনা করুন। যদি আপনি এই বস্তুর মধ্যে আইডি ইতিমধ্যে বিদ্যমান কিনা দেখতে চান তবে আপনি এটি ব্যবহার করতে পারেন ()

products = [
    {
        "id": 1,
        "name": "Name 1"
    },
    {
        "id": 2,
        "name": "Name 2"
    },
  ]

  item1 = 
    {
        "id": 3,
        "name": "Name 3",
    }



  item2 = 
    {
        "id": 1,
        "name": "Name 1",
    }



  if(products.find(x => x.id === item1.id)){
    console.log('id is in products');
  }else {
    console.log('id is not in products');
  }
  if(products.find(x => x.id === item2.id)){
    console.log('id is in products');
  }else {
    console.log('id is not in products');
  }

লগ ইন করুন:

id is not in products
id is in products

ভ্যানিলা জেএস

yourObjName.hasOwnProperty(key) : true ? false;

আপনি যদি ২015 এ বস্তুর কমপক্ষে একটি সম্পত্তি থাকে কিনা তা পরীক্ষা করতে চান

Object.keys(yourObjName).length : true ? false

যখন একটি কী বিদ্যমান থাকে তা অগত্যা চেক করুন, এটি একটি মান সত্যতা চেক করে। কোন undefined এবং null অধীন পতন।

Boolean(obj.foo)

এই সমাধানটি আমার জন্য সর্বোত্তম কাজ করে কারণ আমি obj.hasOwnProperty('foo') ব্যবহার করি এবং obj.hasOwnProperty('foo') বা obj.hasOwnProperty('foo') মতো স্ট্রিংগুলি ব্যবহার করে কী কী বিদ্যমান আছে কিনা তা পরীক্ষা করার জন্য নাকি obj.hasOwnProperty('foo') করে না।


উত্তর:

if ("key" in myObj)
{
    console.log("key exists!");
}
else
{
    console.log("key doesn't exist!");
}

ব্যাখ্যা:

বস্তুর মধ্যে কী উপস্থিত থাকলে in অপারেটর চেক করবে। যদি মানটি অনির্ধারিত হয় তবে আপনি যদি চেক করেন: if (myObj["key"] === 'undefined') , আপনি সমস্যার মধ্যে চলতে পারেন কারণ একটি কী undefined মান সহ আপনার বস্তুর মধ্যে সম্ভবত উপস্থিত থাকতে পারে।

সেই কারণে, প্রথমে অপারেটরটি ব্যবহার করার জন্য এটি আরও ভাল অনুশীলন এবং তারপরে আপনি কী জানেন যে এটি কী ইতিমধ্যে বিদ্যমান থাকলে তা তুলনা করুন।


জাভাস্ক্রিপ্ট ধ্বংস সঙ্গে নতুন সন্ত্রস্ত সমাধান:

var obj = {
    test: "",
    locals: {
        test: "",
        test2: false,
        test3: NaN,
        test4: 0,
        test5: undefined,
        auth: {
            user: "hw"
        }
    }
}

keyExistsOn(obj, "")
> false
keyExistsOn(obj, "locals.test")
> true
keyExistsOn(obj, "locals.test2")
> true
keyExistsOn(obj, "locals.test3")
> true
keyExistsOn(obj, "locals.test4")
> true
keyExistsOn(obj, "locals.test5")
> true
keyExistsOn(obj, "sdsdf")
false
keyExistsOn(obj, "sdsdf.rtsd")
false
keyExistsOn(obj, "sdsdf.234d")
false
keyExistsOn(obj, "2134.sdsdf.234d")
false
keyExistsOn(obj, "locals")
true
keyExistsOn(obj, "locals.")
false
keyExistsOn(obj, "locals.auth")
true
keyExistsOn(obj, "locals.autht")
false
keyExistsOn(obj, "locals.auth.")
false
keyExistsOn(obj, "locals.auth.user")
true
keyExistsOn(obj, "locals.auth.userr")
false
keyExistsOn(obj, "locals.auth.user.")
false
keyExistsOn(obj, "locals.auth.user")
true

জাভাস্ক্রিপ্ট Destructuring অন্যান্য ব্যবহার চেক করুন


"key" in obj

সম্ভবত পরীক্ষার শুধুমাত্র অ্যারের কী থেকে আলাদা বৈশিষ্ট্য গুণাবলী বস্তু






object