আমার কাছে যদি জেএস বস্তু থাকে তবে:
var foo = { 'bar' : 'baz' }
যদি আমি জানতে পারি যে fooসেই বেসিক কী / মান কাঠামো আছে তবে কীটির নামটি জানেন না, এটি পাওয়ার সহজতম উপায় কী? for ... in? $.each()? আমি আশা করি এর থেকে আরও ভাল কিছু আছে ....
আমার কাছে যদি জেএস বস্তু থাকে তবে:
var foo = { 'bar' : 'baz' }
যদি আমি জানতে পারি যে fooসেই বেসিক কী / মান কাঠামো আছে তবে কীটির নামটি জানেন না, এটি পাওয়ার সহজতম উপায় কী? for ... in? $.each()? আমি আশা করি এর থেকে আরও ভাল কিছু আছে ....
উত্তর:
আপনি যদি সমস্ত কী পেতে চান তবে ECMAScript 5 চালু করা হয়েছেObject.keys । এটি কেবলমাত্র নতুন ব্রাউজারগুলির দ্বারা সমর্থিত তবে এমডিসি ডকুমেন্টেশন একটি বিকল্প বাস্তবায়ন সরবরাহ করে (যা for...inবিটিডব্লুও ব্যবহার করে ):
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
অবশ্যই আপনি যদি কী এবং মান উভয়ই চান for...inতবে একমাত্র যুক্তিযুক্ত সমাধান।
pআমাকে কী দেয় তবে আমি কীটির মান পাব? ধন্যবাদ।
আপনি লুপটির জন্য অবজেক্টের ভিতরে পুনরাবৃত্তি করতে পারেন:
for(var i in foo){
alert(i); // alerts key
alert(foo[i]); //alerts key's value
}
অথবা
Object.keys(foo)
.forEach(function eachKey(key) {
alert(key); // alerts key
alert(foo[key]); // alerts value
});
foo[i]হতে চাই "_proto_"?
foo[i]যদি iহয় some string?
এ হিসাবে পুনরাবৃত্তি না করে আপনি প্রতিটি কী পৃথকভাবে অ্যাক্সেস করতে পারবেন:
var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second
const [firstKey, ...rest] = Object.keys(obj);
আপনার অবজেক্ট দেওয়া:
var foo = { 'bar' : 'baz' }
পেতে bar, ব্যবহার করুন:
Object.keys(foo)[0]
পেতে baz, ব্যবহার করুন:
foo[Object.keys(foo)[0]]
একক বস্তু ধরে নেওয়া
একজন এক মাছ ধরার নৌকা তোমার জন্য:
const OBJECT = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
};
const value = 'value2';
const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];
window.console.log(key); // = key2
এটি সহজ এবং সহজ উপায়। আমরা এইভাবেই করি।
var obj = { 'bar' : 'baz' }
var key = Object.keys(obj)[0];
var value = obj[key];
console.log("key = ", key) // bar
console.log("value = ", value) // baz
Object.keys(obj) // ['bar']
এখন আপনি অবজেক্টগুলিতে পুনরাবৃত্তি করতে পারেন এবং নীচের মতো মানগুলি অ্যাক্সেস করতে পারেন-
Object.keys(obj).forEach( function(key) {
console.log(obj[key]) // baz
})
TypeErrorকীটি একটি নম্বর হওয়ার প্রত্যাশা করলে আপনি পেতে পারেন। কারণ কীগুলি সর্বদা স্ট্রিং থাকে।
আমারও একই সমস্যা ছিল এবং এটিই কাজ করেছিল
//example of an Object
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;
var value = person[key];? এইভাবে আপনাকে যে মানটি টানতে চান তার কীটি জানতে হবে না।
ছাড়া উপায় নেই for ... in। আপনি যদি এটি ব্যবহার করতে না চান ( hasOwnPropertyপ্রতিটি পুনরাবৃত্তির উপর পরীক্ষা করার জন্য এটি সামান্য অক্ষম ? কারণ) আলাদা আলাদা কনস্ট্রাক্ট ব্যবহার করুন, যেমন কেভিপি'র একটি অ্যারে:
[{ key: 'key', value: 'value'}, ...]
যেহেতু আপনি উল্লেখ করেছেন $.each(), এখানে একটি কার্যকর পন্থা যা jQuery 1.6+ এ কাজ করবে:
var foo = { key1: 'bar', key2: 'baz' };
// keys will be: ['key1', 'key2']
var keys = $.map(foo, function(item, key) {
return key;
});
সবচেয়ে সহজ উপায় হ'ল অ্যান্ডস্কোর.জেএস ব্যবহার করা:
কী
_.keys (অবজেক্ট) অবজেক্টের বৈশিষ্ট্যের সমস্ত নাম পুনরুদ্ধার করুন।
_.কিজ ({এক: 1, দুই: 2, তিন: 3}); => ["একটি", "দুই", "তিন"]
হ্যাঁ, আপনার একটি অতিরিক্ত গ্রন্থাগার দরকার তবে এটি এত সহজ!
অবজেক্ট.কিজ () অবজেক্ট.কিজ () পদ্ধতিটি প্রদত্ত বস্তুর নিজস্ব গুণমানের বৈশিষ্ট্যগুলির একটি অ্যারে প্রদান করে, লুপের জন্য ... এর জন্য প্রদত্ত একই ক্রমে (পার্থক্যটি হ'ল লুপের জন্য বৈশিষ্ট্যগুলি গণনা করে) প্রোটোটাইপ চেইনেও)।
var arr1 = Object.keys(obj);
অবজেক্ট.ভ্যালু () অবজেক্ট.ভ্যালু () পদ্ধতিটি প্রদত্ত বস্তুর নিজস্ব গণ্য সম্পত্তি মানগুলির একটি অ্যারে প্রদান করে, লুপের জন্য ... এর জন্য প্রদত্ত একই ক্রমে (পার্থক্যটি হ'ল লুপটি গণনা করে) প্রোটোটাইপ চেইনে বৈশিষ্ট্যগুলিও)।
var arr2 = Object.values(obj);
আরও জন্য দয়া করে এখানে যান
জাভাস্ক্রিপ্টে অবজেক্ট বা মানচিত্রের কীগুলি অ্যাক্সেসের জন্য প্রতিটি লুপের জন্য ব্যবহার করুন
for(key in foo){
console.log(key);//for key name in your case it will be bar
console.log(foo[key]);// for key value in your case it will be baz
}
দ্রষ্টব্য: আপনি ব্যবহার করতে পারেন
Object.keys (foo বিন্যাস);
এটি আপনাকে এই আউটপুটটির মতো দেবে:
[দণ্ড];
ওয়েল $.eachএকটি লাইব্রেরি নির্মাণ, যেখানে for ... inদেশীয় জেএস, যা আরও ভাল হওয়া উচিত
আপনি কীগুলি পেতে অবজেক্ট.কিজ কার্যকারিতাটি ব্যবহার করতে পারেন:
const tempObjects={foo:"bar"}
Object.keys(tempObjects).forEach(obj=>{
console.log("Key->"+obj+ "value->"+tempObjects[obj]);
});
কী / অবজেক্টের মান পাওয়ার সর্বোত্তম উপায়।
let obj = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
}
Object.keys(obj).map(function(k){
console.log("key with value: "+k +" = "+obj[k])
})