জাভাস্ক্রিপ্টে আমার একটি অবজেক্ট রয়েছে:
var obj = {
"a": "test1",
"b": "test2"
}
আমি কীভাবে পরীক্ষণ করব যে টেস্ট 1 মান হিসাবে বস্তুটিতে বিদ্যমান?
জাভাস্ক্রিপ্টে আমার একটি অবজেক্ট রয়েছে:
var obj = {
"a": "test1",
"b": "test2"
}
আমি কীভাবে পরীক্ষণ করব যে টেস্ট 1 মান হিসাবে বস্তুটিতে বিদ্যমান?
উত্তর:
আপনি কোনও অবজেক্টের মানগুলিকে একটি অ্যারেতে পরিণত করতে পারেন এবং পরীক্ষা করতে পারেন যে একটি স্ট্রিং উপস্থিত রয়েছে। এটি ধরে নিয়েছে যে অবজেক্টটি নেস্টেড নয় এবং স্ট্রিংটি হুবহু মিল:
var obj = { a: 'test1', b: 'test2' };
if (Object.values(obj).indexOf('test1') > -1) {
console.log('has test1');
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/ উল্লেখ / গ্লোবাল_অবজেক্টস / অবজেক্ট / মূল্য
if(Object.values(obj).includes('test1')) { ... }
চেষ্টা করুন:
var obj = {
"a": "test1",
"b": "test2"
};
Object.keys(obj).forEach(function(key) {
if (obj[key] == 'test1') {
alert('exists');
}
});
বা
var obj = {
"a": "test1",
"b": "test2"
};
var found = Object.keys(obj).filter(function(key) {
return obj[key] === 'test1';
});
if (found.length) {
alert('exists');
}
এটি সেই মানগুলির জন্য NaNএবং এর -0জন্য কাজ করবে না । ===ECMAScript 6 এ নতুন কী আপনি ব্যবহার করতে পারেন (পরিবর্তে ):
Object.is(obj[key], value);
আধুনিক ব্রাউজারগুলির সাহায্যে আপনি এটি ব্যবহার করতে পারেন:
var obj = {
"a": "test1",
"b": "test2"
};
if (Object.values(obj).includes('test1')) {
alert('exists');
}
একটি for...inলুপ ব্যবহার করুন :
for (let k in obj) {
if (obj[k] === "test1") {
return true;
}
}
সবচেয়ে কম ES6 + একটি লাইনার:
let exists = Object.values(obj).includes("test1");
আপনি অবজেক্ট.ভ্যালু () ব্যবহার করতে পারেন :
Object.values()পদ্ধতি একটি প্রদত্ত বস্তু নিজস্ব গণনীয় সম্পত্তি মূল্যবোধের একটি বিন্যাস দেখায় একটি যেমন দেওয়া হয়েছিল তেমন একই আদেশ,for...in(পার্থক্য হচ্ছে যে একটি জন্য-ইন প্রোটোটাইপ চেন লুপ উল্লেখ বৈশিষ্ট্য হিসাবে ভাল) লুপ।
এবং তারপরে সূচিপত্র () পদ্ধতিটি ব্যবহার করুন :
indexOf()পদ্ধতি প্রথম সূচক যা একটি প্রদত্ত উপাদানের বিন্যাস খুঁজে পাওয়া যেতে পারে, অথবা -1 যদি এটা উপস্থিত নেই ফেরৎ।
উদাহরণ স্বরূপ:
Object.values(obj).indexOf("test`") >= 0
আরও ভার্বোজের উদাহরণ নীচে রয়েছে:
var obj = {
"a": "test1",
"b": "test2"
}
console.log(Object.values(obj).indexOf("test1")); // 0
console.log(Object.values(obj).indexOf("test2")); // 1
console.log(Object.values(obj).indexOf("test1") >= 0); // true
console.log(Object.values(obj).indexOf("test2") >= 0); // true
console.log(Object.values(obj).indexOf("test10")); // -1
console.log(Object.values(obj).indexOf("test10") >= 0); // false
আমি এই সমস্ত উদাহরণ দিয়ে একটি পরীক্ষা করেছি, এবং আমি নোড.জেএস v8.11.2 এ এটি চালিয়েছি । আপনার সেরা পছন্দটি নির্বাচন করতে এটি গাইড হিসাবে নিন।
let i, tt;
const obj = { a: 'test1', b: 'test2', c: 'test3', d: 'test4', e: 'test5', f: 'test6' };
console.time("test1")
i = 0;
for( ; i<1000000; i=i+1) {
if (Object.values(obj).indexOf('test4') > -1) {
tt = true;
}
}
console.timeEnd("test1")
console.time("test1.1")
i = 0;
for( ; i<1000000 ; i=i+1) {
if (~Object.values(obj).indexOf('test4')) {
tt = true;
}
}
console.timeEnd("test1.1")
console.time("test2")
i = 0;
for( ; i<1000000; i=i+1) {
if (Object.values(obj).includes('test4')) {
tt = true;
}
}
console.timeEnd("test2")
console.time("test3")
i = 0;
for( ; i<1000000 ; i=i+1) {
for(const item in obj) {
if(obj[item] == 'test4') {
tt = true;
break;
}
}
}
console.timeEnd("test3")
console.time("test3.1")
i = 0;
for( ; i<1000000; i=i+1) {
for(const [item, value] in obj) {
if(value == 'test4') {
tt = true;
break;
}
}
}
console.timeEnd("test3.1")
console.time("test4")
i = 0;
for( ; i<1000000; i=i+1) {
tt = Object.values(obj).some((val, val2) => {
return val == "test4"
});
}
console.timeEnd("test4")
console.time("test5")
i = 0;
for( ; i<1000000; i=i+1) {
const arr = Object.keys(obj);
const len = arr.length;
let i2 = 0;
for( ; i2<len ; i2=i2+1) {
if(obj[arr[i2]] == "test4") {
tt = true;
break;
}
}
}
console.timeEnd("test5")
আমার সার্ভারে আউটপুট
test1: 272.325 ms
test1.1: 246.316 ms
test2: 251.98 0ms
test3: 73.284 ms
test3.1: 102.029 ms
test4: 339.299 ms
test5: 85.527 ms
এক লাইনের জন্য, আমি বলব:
exist = Object.values(obj).includes("test1");
console.log(exist);
আপনি এটি চেষ্টা করতে পারেন:
function checkIfExistingValue(obj, key, value) {
return obj.hasOwnProperty(key) && obj[key] === value;
}
var test = [{name : "jack", sex: F}, {name: "joe", sex: M}]
console.log(test.some(function(person) { return checkIfExistingValue(person, "name", "jack"); }));
getValue = function (object, key) {
return key.split(".").reduce(function (obj, val) {
return (typeof obj == "undefined" || obj === null || obj === "") ? obj : (_.isString(obj[val]) ? obj[val].trim() : obj[val]);}, object);
};
var obj = {
"a": "test1",
"b": "test2"
};
ফাংশন বলা হয়:
getValue(obj, "a");
var obj = {"a": "test1", "b": "test2"};
var getValuesOfObject = Object.values(obj)
for(index = 0; index < getValuesOfObject.length; index++){
return Boolean(getValuesOfObject[index] === "test1")
}
অবজেক্ট.ভালিউস () পদ্ধতি প্রদত্ত বস্তুর (অবজেক্ট) নিজস্ব অগণিত সম্পত্তি মান সম্বলিত একটি অ্যারে (getValuesOfObject বরাদ্দ করা) প্রদান করে। অ্যারে forপ্রতিটি মান (getValuesfromObject এর মান) পুনরুদ্ধার করতে লুপটি ব্যবহার করে পুনরাবৃত্তি হয়েছিল এবং এক্সপ্রেশনটি ("পাঠ্য 1" লুপিং অ্যারেতে একটি মান কিনা) তা খুঁজে বের করার জন্য একটি বুলিয়ান () ফাংশন প্রদান করে।
if( myObj.hasOwnProperty('key') && myObj['key'] === value ){
...
}
এর সহজ উত্তর নীচে দেওয়া হল।
এটি কাজ করছে কারণ প্রতিটি জাভাস্ক্রিপ্ট টাইপের প্রোটোটাইপে একটি "কনস্ট্রাক্টর" সম্পত্তি রয়েছে ।
let array = []
array.constructor === Array
// => true
let data = {}
data.constructor === Object
// => true
এটি একটি সহজ চেক করা উচিত।
উদাহরণ 1
var myObj = {"a": "test1"}
if(myObj.a == "test1") {
alert("test1 exists!");
}
var a = {};<br/>'hasOwnProperty' in a' //true
Object.values(obj).includes('test1');