আমার এটির মতো জাভাস্ক্রিপ্টে একটি অভিধান তৈরি করা দরকার
আমি সঠিক চিহ্নটি মনে করি না তবে এটি এমন কিছু ছিল:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
জাভাস্ক্রিপ্ট এ কি জিনিস আছে?
আমার এটির মতো জাভাস্ক্রিপ্টে একটি অভিধান তৈরি করা দরকার
আমি সঠিক চিহ্নটি মনে করি না তবে এটি এমন কিছু ছিল:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
জাভাস্ক্রিপ্ট এ কি জিনিস আছে?
উত্তর:
এটি একটি পুরানো পোস্ট, তবে আমি ভেবেছিলাম আমার যাইহোক কোনও সচিত্র উত্তর দেওয়া উচিত।
জাভাস্ক্রিপ্ট এর অবজেক্ট স্বরলিপি ব্যবহার করুন। তাই ভালো:
states_dictionary={
"CT":["alex","harry"],
"AK":["liza","alex"],
"TX":["fred", "harry"]
};
এবং মানগুলি অ্যাক্সেস করতে:
states_dictionary.AK[0] //which is liza
অথবা আপনি জাভাস্ক্রিপ্ট আক্ষরিক অবজেক্ট স্বরলিপি ব্যবহার করতে পারেন, যার মাধ্যমে কীগুলি উদ্ধৃতিতে থাকা দরকার নেই:
states_dictionary={
CT:["alex","harry"],
AK:["liza","alex"],
TX:["fred", "harry"]
};
Object.hasOwnProperty.call(dictionary, key)(অন্যথায় ব্যবহারকারীর একটি মান লিখতে পারেন valueOf এবং dictionary['valueOf']ফেরৎ Object.valueOf()ফাংশন বস্তু প্রোটোটাইপ সম্ভবত নয় কি আপনার কোড আশা একাত্মতার - সম্ভাব্য বাগ অথবা সুরক্ষা সমস্যা )। যদি কীটি কোনও স্ট্রিং ধরণের না হয়, তবে যত্ন নেওয়া দরকার, অন্যথায় অন্তর্নিহিত সংখ্যা এবং টোস্ট্রিং রূপান্তরগুলি আপনাকে সমস্যার কারণ হতে পারে। ES6 Mapপ্রকারটি অভিধানের জন্য বর্ধিত কার্যকারিতা সরবরাহ করার জন্য ডিজাইন করা হয়েছে।
২০১৫ সাল পর্যন্ত জাভাস্ক্রিপ্টে কোনও আসল সহযোগী অ্যারে নেই (ইসকামাস্ক্রিপ্ট of এর প্রকাশ)। তার পর থেকে আপনি মানচিত্র অবজেক্টটি রোবোক্যাটের রাজ্য হিসাবে ব্যবহার করতে পারবেন। এমডিএন-এ বিশদটি দেখুন । উদাহরণ:
let map = new Map();
map.set('key', {'value1', 'value2'});
let values = map.get('key');
ES6 এর সমর্থন ছাড়াই আপনি অবজেক্টগুলি ব্যবহার করে দেখতে পারেন:
var x = new Object();
x["Key"] = "Value";
তবে বস্তুগুলির সাহায্যে সাধারণত অ্যারে বৈশিষ্ট্য বা অ্যারে.লাইথের মতো পদ্ধতি ব্যবহার করা সম্ভব নয়। অন্তত ইন-লুপটিতে "অবজেক্ট-অ্যারে" অ্যাক্সেস করা সম্ভব।
আমি বুঝতে পেরেছি এটি একটি পুরানো প্রশ্ন, তবে আপনি যখন গুপ্তচর জাভাস্ক্রিপ্ট অভিধানগুলি অনুসন্ধান করবেন তখন গুগলে এটি আপ হয়, সুতরাং আমি উপরের উত্তরগুলিতে যুক্ত করতে চাই যে ECMAScript 6 এ অফিসিয়াল Mapঅবজেক্টটি চালু করা হয়েছে, যা একটি অভিধান বাস্তবায়ন:
var dict = new Map();
dict.set("foo", "bar");
//returns "bar"
dict.get("foo");
জাভাস্ক্রিপ্টের সাধারণ বিষয়গুলির থেকে পৃথক, এটি কোনও বস্তুকে কী হিসাবে মঞ্জুরি দেয়:
var foo = {};
var bar = {};
var dict = new Map();
dict.set(foo, "Foo");
dict.set(bar, "Bar");
//returns "Bar"
dict.get(bar);
//returns "Foo"
dict.get(foo);
//returns undefined, as {} !== foo and {} !== bar
dict.get({});
dict = { key: value)?
এখানে জেএসে একটি সাধারণ অভিধান তৈরি করেছেন:
function JSdict() {
this.Keys = [];
this.Values = [];
}
// Check if dictionary extensions aren't implemented yet.
// Returns value of a key
if (!JSdict.prototype.getVal) {
JSdict.prototype.getVal = function (key) {
if (key == null) {
return "Key cannot be null";
}
for (var i = 0; i < this.Keys.length; i++) {
if (this.Keys[i] == key) {
return this.Values[i];
}
}
return "Key not found!";
}
}
// Check if dictionary extensions aren't implemented yet.
// Updates value of a key
if (!JSdict.prototype.update) {
JSdict.prototype.update = function (key, val) {
if (key == null || val == null) {
return "Key or Value cannot be null";
}
// Verify dict integrity before each operation
if (keysLength != valsLength) {
return "Dictionary inconsistent. Keys length don't match values!";
}
var keysLength = this.Keys.length;
var valsLength = this.Values.length;
var flag = false;
for (var i = 0; i < keysLength; i++) {
if (this.Keys[i] == key) {
this.Values[i] = val;
flag = true;
break;
}
}
if (!flag) {
return "Key does not exist";
}
}
}
// Check if dictionary extensions aren't implemented yet.
// Adds a unique key value pair
if (!JSdict.prototype.add) {
JSdict.prototype.add = function (key, val) {
// Allow only strings or numbers as keys
if (typeof (key) == "number" || typeof (key) == "string") {
if (key == null || val == null) {
return "Key or Value cannot be null";
}
if (keysLength != valsLength) {
return "Dictionary inconsistent. Keys length don't match values!";
}
var keysLength = this.Keys.length;
var valsLength = this.Values.length;
for (var i = 0; i < keysLength; i++) {
if (this.Keys[i] == key) {
return "Duplicate keys not allowed!";
}
}
this.Keys.push(key);
this.Values.push(val);
}
else {
return "Only number or string can be key!";
}
}
}
// Check if dictionary extensions aren't implemented yet.
// Removes a key value pair
if (!JSdict.prototype.remove) {
JSdict.prototype.remove = function (key) {
if (key == null) {
return "Key cannot be null";
}
if (keysLength != valsLength) {
return "Dictionary inconsistent. Keys length don't match values!";
}
var keysLength = this.Keys.length;
var valsLength = this.Values.length;
var flag = false;
for (var i = 0; i < keysLength; i++) {
if (this.Keys[i] == key) {
this.Keys.shift(key);
this.Values.shift(this.Values[i]);
flag = true;
break;
}
}
if (!flag) {
return "Key does not exist";
}
}
}
var dict = new JSdict();
dict.add(1, "one")
dict.add(1, "one more")
"Duplicate keys not allowed!"
dict.getVal(1)
"one"
dict.update(1, "onne")
dict.getVal(1)
"onne"
dict.remove(1)
dict.getVal(1)
"Key not found!"
এটি কেবল একটি প্রাথমিক সিমুলেশন। এটি কমপক্ষে O (nlogn) সময় জটিলতা বা তার চেয়েও কম সময়ে কাজ করার জন্য আরও ভাল চলমান সময়ের অ্যালগরিদম প্রয়োগ করে আরও অনুকূলিত করা যেতে পারে। অ্যারেগুলিতে মার্জ / দ্রুত সাজানোর মতো এবং তারপরে লুকআপের জন্য কিছু বি-অনুসন্ধান। আমি জেএস-তে কোনও হ্যাশ ফাংশন ম্যাপিংয়ের চেষ্টা করেছিলাম বা অনুসন্ধান করি নি।
এছাড়াও, জেএসডিক্ট আপজের জন্য কী এবং মানটি গোপনীয় হওয়ার জন্য ব্যক্তিগত ভেরিয়েবলগুলিতে রূপান্তর করা যেতে পারে।
আশাকরি এটা সাহায্য করবে!
সম্পাদনা করুন >> উপরের প্রয়োগের পরে, আমি ব্যক্তিগতভাবে জেএস অবজেক্টগুলিকে বাক্সের বাইরে পাওয়া যায় এমন সহযোগী অ্যারে হিসাবে ব্যবহার করি।
যাইহোক , আমি দুটি পদ্ধতি সম্পর্কে একটি বিশেষ উল্লেখ করতে চাই যা এটি একটি সুবিধাজনক হ্যাশটেবল অভিজ্ঞতা তৈরি করতে আসলে সহায়ক হিসাবে প্রমাণিত হয়েছিল।
যেমন: ডিক.হসনপ্রপার্টি (কী) এবং ডিক মুছুন [কী]
এই প্রয়োগ / ব্যবহারের একটি ভাল উত্স হিসাবে এই পোস্টটি পড়ুন। সচলভাবে জাভাস্ক্রিপ্ট সহযোগী অ্যারেতে কীগুলি তৈরি করা হচ্ছে
ধন্যবাদ!
জাভাস্ক্রিপ্ট অবজেক্ট ব্যবহার করুন। আপনি অভিধানে কীগুলির মতো তাদের বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন। এটি জেএসএনের ভিত্তি। বাক্য গঠনটি পাইথন অভিধানের মতো to দেখুন: জেএসওএন.অর্গ
একটি পুরানো প্রশ্ন তবে আমার সম্প্রতি একটি এএস 3> জেএস বন্দরটি করা দরকার ছিল এবং গতির স্বার্থে আমি জেএসের জন্য একটি সাধারণ এএস 3-শৈলীর অভিধান অবজেক্টটি লিখেছি:
http://jsfiddle.net/MickMalone1983/VEpFf/2/
যদি আপনি না জানতেন তবে এএস 3 অভিধান আপনাকে কোনও স্ট্রিংয়ের বিপরীতে কোনও অবজেক্টটিকে কী হিসাবে ব্যবহার করতে দেয়। আপনি যখন তাদের জন্য কোনও ব্যবহার খুঁজে পেয়েছেন তখন এগুলি খুব কাজে আসে।
এটি কোনও নেটিভ অবজেক্ট হিসাবে তত দ্রুত নয়, তবে আমি সে সম্পর্কে কোনও উল্লেখযোগ্য সমস্যা পাইনি।
এপিআই:
//Constructor
var dict = new Dict(overwrite:Boolean);
//If overwrite, allows over-writing of duplicate keys,
//otherwise, will not add duplicate keys to dictionary.
dict.put(key, value);//Add a pair
dict.get(key);//Get value from key
dict.remove(key);//Remove pair by key
dict.clearAll(value);//Remove all pairs with this value
dict.iterate(function(key, value){//Send all pairs as arguments to this function:
console.log(key+' is key for '+value);
});
dict.get(key);//Get value from key
ফায়ারফক্স 13+ পাইথনের mapবস্তুর অনুরূপ অবজেক্টের একটি পরীক্ষামূলক বাস্তবায়ন সরবরাহ করে dict। বিশেষ উল্লেখ এখানে ।
এটি কেবল ফায়ারফক্সে উপলভ্য, তবে এটির বৈশিষ্ট্যগুলি ব্যবহার করার চেয়ে এটি আরও ভাল দেখাচ্ছে new Object()। ডকুমেন্টেশন থেকে উদ্ধৃতি:
- একটি অবজেক্টের একটি প্রোটোটাইপ রয়েছে, তাই মানচিত্রে ডিফল্ট কী রয়েছে। তবে এটি ব্যবহার করে বাইপাস করা যায়
map = Object.create(null)।- একটি কি
Objectহয়Strings, যেখানে তারা একটি জন্য কোনো মূল্য হতে পারেMap।- আপনি
Mapম্যানুয়ালি একটি এর জন্য আকারের ট্র্যাক রাখতে হবে যখন আপনি সহজেই আকারটি পেতে পারেনObject।