জাভাস্ক্রিপ্টে কোনও কী => মান অ্যারে সঞ্চয় করার সর্বোত্তম উপায়?


252

key=>valueজাভাস্ক্রিপ্টে একটি অ্যারের সঞ্চয় করার সর্বোত্তম উপায় কী এবং কীভাবে এটি লুপ করা যায়?

প্রতিটি উপাদানটির চাবি একটি ট্যাগ হওয়া উচিত, যেমন {id}বা ন্যায় idএবং মানটি আইডির সংখ্যাসূচক মান হওয়া উচিত।

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

jQuery ব্যবহার করা যেতে পারে।


একটি হ্যাশ পুনরাবৃত্তি করে ea .এইচ করবে না? এটি বেশ মানক।
কেজিয়ান্নাকাকিস

18
বিশ্বে কেন আপনি এই সহজ বুনিয়াদি কাজ, কিগিয়েনাকাকিসের জন্য jQuery ব্যবহার করতে চান?
আর্টেম রাশাকোভস্কিই

7
যদি আপনি jQuery ব্যবহার করে যাইহোক $ .each দিয়ে পুনরাবৃত্তি করেন তবে লুপের জন্য সহজ থেকে ভাল।
কেজিয়ান্নাকাকিস

@ কেজিয়ান্নাকাকিস খুব সাধারণ যুক্তি কিন্তু সবার পক্ষে এতটা স্পষ্ট নয়, যেমনটি এখানে দেখা যায়। ;-)
এসডলিন্স

2
@kgiannakakis বা কোনও অ্যারে লুপ করতে jQuery ব্যবহার করার পরিবর্তে , আপনি জাভাস্ক্রিপ্টের Array.prototype.forEach
বিল্টিন

উত্তর:


432

এটি একটি জাভাস্ক্রিপ্ট অবজেক্ট যা ঠিক:

var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
myArray.id3 = 400;
myArray["id4"] = 500;

আপনি এটা মাধ্যমে লুপ ব্যবহার করতে পারেন for..inলুপ :

for (var key in myArray) {
  console.log("key " + key + " has value " + myArray[key]);
}

আরও দেখুন: অবজেক্টস (এমডিএন) এর সাথে কাজ করা

ECMAScript6 এ এছাড়াও রয়েছে Map(ব্রাউজারের সামঞ্জস্যতার টেবিলটি এখানে দেখুন):

  • একটি অবজেক্টের একটি প্রোটোটাইপ রয়েছে, তাই মানচিত্রে ডিফল্ট কী রয়েছে। এটি ES5 সাল থেকে মানচিত্র = অবজেক্ট.ক্রিয়েট (নাল) ব্যবহার করে বাইপাস করা যেতে পারে তবে খুব কমই সম্পন্ন হয়েছিল।

  • কোনও অবজেক্টের কীগুলি স্ট্রিংস এবং সিম্বলস, যেখানে সেগুলি মানচিত্রের কোনও মান হতে পারে।

  • আপনাকে কোনও মানচিত্রের আকার সহজেই পেতে পারেন যখন আপনাকে কোনও বস্তুর জন্য ম্যানুয়ালি আকারের ট্র্যাক রাখতে হয়।


26
আপনার ব্রাউজারটি যদি এটি সমর্থন করে (আই 9 এবং তার বেশি) var foo = Object.create(null)তবে প্রথমে খালি বস্তুটি তৈরি করা এবং তারপরে এটির মতো বৈশিষ্ট্য যুক্ত করা নিরাপদ foo.bar = "baz"। এর সাথে একটি বস্তু তৈরি {}করা সমান Object.create(Object.prototype), যার অর্থ এটি এর সমস্ত বৈশিষ্ট্যের উত্তরাধিকার সূত্রে প্রাপ্ত Object। সাধারণত এটি কোনও সমস্যা নয় তবে কিছু লাইব্রেরি যদি বিশ্বব্যাপী পরিবর্তন করে থাকে তবে এটি আপনার অবজেক্টের অপ্রত্যাশিত কীগুলির কারণ হতে পারে Object.prototype
ররি ও'কেনে

1
@ ররিও'কেন আপনি এর আশপাশে পেতে হ্যাডস্প্রোপার্টি ব্যবহার করতে পারেন।

4
@ ড্যাম্যাক্স কনটেন্ট আপনি তিনবার বাম দিকে ঘুরিয়ে ডানদিকে ঘুরতে পারেন।
কোডরেচেট

1
@ থেনাগ্লোকোড কখনও কখনও 3 বার কাজ করে। ভাবুন তো আপনি ডানদিকে ঘুরতে না পারলে? অথবা আপনি একাধিকবার এটি করতে হয়েছে?

তবে সম্ভবত ওপি একটি অ্যারে চেয়েছিল যেহেতু বস্তুগুলি ব্রাউজার বাস্তবায়নের ক্ষেত্রে আইটেমগুলির ক্রমাগত ধারাবাহিকতা রাখে না?
ট্রিনিসোসিস

98

আমি যদি আপনাকে সঠিকভাবে বুঝতে পারি:

var hash = {};
hash['bob'] = 123;
hash['joe'] = 456;

var sum = 0;
for (var name in hash) {
    sum += hash[name];
}
alert(sum); // 579

31

আপনি মানচিত্র ব্যবহার করতে পারেন ।

  • জাভাস্ক্রিপ্ট ES6 এ একটি নতুন ডেটা স্ট্রাকচার চালু করা হয়েছে।
  • কী / মান জোড়া সঞ্চয় করার জন্য জাভাস্ক্রিপ্ট অবজেক্টের বিকল্প।
  • কী / মান জোড়ের উপর দিয়ে পুনরাবৃত্তির জন্য দরকারী পদ্ধতি রয়েছে।
var map = new Map();
map.set('name', 'John');
map.set('id', 11);

// Get the full content of the Map
console.log(map); // Map { 'name' => 'John', 'id' => 11 }

কী ব্যবহার করে মানচিত্রটির মান পান

console.log(map.get('name')); // John 
console.log(map.get('id')); // 11

মানচিত্রের আকার পান

console.log(map.size); // 2

মানচিত্রে চেক কী বিদ্যমান

console.log(map.has('name')); // true
console.log(map.has('age')); // false

চাবি পান

console.log(map.keys()); // MapIterator { 'name', 'id' }

মান পান

console.log(map.values()); // MapIterator { 'John', 11 }

মানচিত্রের উপাদান পান

for (let element of map) {
  console.log(element);
}

// Output:
// [ 'name', 'John' ]
// [ 'id', 11 ]

কী মান জোড়া মুদ্রণ করুন

for (let [key, value] of map) {
  console.log(key + " - " + value);
}

// Output: 
// name - John
// id - 11

মানচিত্রের কেবল কীগুলি মুদ্রণ করুন

for (let key of map.keys()) {
  console.log(key);
}

// Output:
// name
// id

মানচিত্রের কেবল মানগুলি মুদ্রণ করুন

for (let value of map.values()) {
  console.log(value);
}

// Output:
// John
// 11

3
দেখে মনে হচ্ছে এটি এর সাথে সামঞ্জস্যপূর্ণ নয় JSON.stringify()
কেনারব

10

জাভাস্ক্রিপ্টে একটি মূল মান অ্যারে একটি বস্তু হিসাবে সংরক্ষণ করা হয়। জাভাস্ক্রিপ্টে অ্যারের মতো জিনিস রয়েছে, তবে এগুলি এখনও কিছুটা অবজেক্ট হিসাবে বিবেচিত হয়, এই ছেলেরা উত্তরটি পরীক্ষা করে দেখুন - কেন আমি কোনও বৈশিষ্ট্য হিসাবে এমন বৈশিষ্ট্যগুলিকে যুক্ত করতে পারি?

অ্যারেগুলি সাধারণত স্কোয়ার ব্র্যাকেট সিনট্যাক্স এবং অবজেক্টস ("কী => মান" অ্যারে) ব্যবহার করে কোঁকড়া বন্ধনী সিনট্যাক্স ব্যবহার করে দেখা যায়, যদিও আপনি অ্যালেক্সি রোমানভ যেমন দেখিয়েছেন তেমন স্কোয়ার ব্র্যাকেট সিনট্যাক্স ব্যবহার করে অবজেক্টের বৈশিষ্ট্য অ্যাক্সেস করতে এবং সেট করতে পারেন।

জাভাস্ক্রিপ্টে অ্যারেগুলি কেবলমাত্র সংখ্যাসূচক, অটো বর্ধিত কীগুলির সাহায্যে ব্যবহৃত হয়, তবে জাভাস্ক্রিপ্ট অবজেক্টগুলিতে নামযুক্ত মূল মান জোড়া, ফাংশন এবং এমনকি অন্যান্য অবজেক্টও রাখা যেতে পারে।

সাধারণ অ্যারে যেমন।

$(document).ready(function(){

    var countries = ['Canada','Us','France','Italy'];
    console.log('I am from '+countries[0]);
    $.each(countries, function(key, value) {
        console.log(key, value);
    });

});

আউটপুট -

0 "কানাডা"

1 "আমাদের"

2 "ফ্রান্স"

3 "ইতালি"

আমরা উপরে দেখতে পেলাম যে আমরা jQuery.each ফাংশনটি ব্যবহার করে একটি সংখ্যাযুক্ত অ্যারে লুপ করতে পারি এবং সংখ্যাসূচক কীগুলির সাথে বর্গাকার বন্ধনী ব্যবহার করে লুপের বাইরে তথ্য অ্যাক্সেস করতে পারি।

সরল অবজেক্ট (জেসন)

$(document).ready(function(){

    var person = {
        name: "James",
        occupation: "programmer",
        height: {
            feet: 6,
            inches: 1
        },
    }

    console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);

    $.each(person, function(key, value) {
        console.log(key, value);
    });

});

আউটপুট -

আমার নাম জেমস এবং আমি 6 ফুট 1 প্রোগ্রামার

নাম জেমস

পেশা প্রোগ্রামার

উচ্চতা অবজেক্ট: ফুট: 6, ইঞ্চি: 1

পিএইচপি-র মতো ভাষায় এটিকে মূল মানের জোড় যুক্ত একটি বহুমাত্রিক অ্যারে বা একটি অ্যারের মধ্যে একটি অ্যারে হিসাবে বিবেচনা করা হবে। আমি ধরে নিচ্ছি কারণ আপনি কী কী কী অ্যারের মাধ্যমে লুপ করবেন সে সম্পর্কে জানতে চেয়েছিলেন আপনি কীভাবে কোনও কী (কী => মান অ্যারে) উপরের ব্যক্তির বস্তুর মতো পেতে পারেন তা বলা যাক, একাধিক ব্যক্তির কথা বলা যাক।

ঠিক আছে, এখন আমরা জানি যে জাভাস্ক্রিপ্ট অ্যারেগুলি সাধারণত সংখ্যার ইনডেক্সিং এবং অ্যাসোসিয়েটিভ ইনডেক্সিংয়ের জন্য আরও নমনীয়ভাবে বস্তুগুলির জন্য ব্যবহৃত হয়, আমরা এগুলির সাথে লুপ করতে পারি এমন বস্তুর একটি অ্যারে তৈরি করতে তাদের একসাথে ব্যবহার করব will

JSON অ্যারে (বস্তুর অ্যারে) -

$(document).ready(function(){

    var people = [
        {
            name: "James",
            occupation: "programmer",
            height: {
                feet: 6,
                inches: 1
            }
        }, {
            name: "Peter",
            occupation: "designer",
            height: {
                feet: 4,
                inches: 10
            }
        }, {
            name: "Joshua",
            occupation: "CEO",
            height: {
                feet: 5,
                inches: 11
            }
        }
    ];

    console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");

    $.each(people, function(key, person) {
        console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
    });

});

আউটপুট -

আমার নাম জোশুয়া এবং আমি 5 ফুট 11 সিইও

আমার নাম জেমস এবং আমি 6 ফুট 1 প্রোগ্রামার

আমার নাম পিটার এবং আমি একজন 4 ফুট 10 ডিজাইনার

আমার নাম জোশুয়া এবং আমি 5 ফুট 11 সিইও

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


ভালভাবে ব্যাখ্যা করা আমাকে এমন একটি সমস্যা সমাধানে সহায়তা করেছে যেখানে আমি উচ্চতা ক্যাপচার করার জন্য কিছু তৈরি করছি building
প্রনয়

3

একটি অ্যারের ভিতরে অবজেক্টস:

var cars = [
        { "id": 1, brand: "Ferrari" }
        , { "id": 2, brand: "Lotus" }
        , { "id": 3, brand: "Lamborghini" }
    ];


0

আমি এর দেরী জানি কিন্তু এটি অন্য উপায়ে চায় তাদের পক্ষে সহায়ক হতে পারে। আরেকটি উপায় অ্যারে কী => মান সংরক্ষণ করা যেতে পারে হ'ল মানচিত্র () নামে একটি অ্যারে পদ্ধতি ব্যবহার করে; ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/ উল্লেখ / গ্লোবাল_অবজেক্টস / অ্যারে / ম্যাপ ) আপনি তীর ফাংশনটিও ব্যবহার করতে পারেন

 
    var countries = ['Canada','Us','France','Italy'];  
// Arrow Function
countries.map((value, key) => key+ ' : ' + value );
// Anonomous Function
countries.map(function(value, key){
return key + " : " + value;
});


-11

আজ আমরা লারাভেল-ব্লেড-জাভাস্ক্রিপ্ট নামে আমাদের নতুন প্যাকেজ প্রকাশ করেছি। এটি আপনাকে জাভাস্ক্রিপ্টে পিএইচপি ভেরিয়েবল রফতানি করার জন্য একটি জাভাস্ক্রিপ্ট ব্লেড নির্দেশিকা সরবরাহ করে। সুতরাং এটি মূলত জেফরি ওয়েয়ের জনপ্রিয় পিএইচপি-ভার্স-টু-জেএস-ট্রান্সফরমার প্যাকেজটির মতোই হয় তবে নিয়ামকটিতে ভেরিয়েবল রফতানির পরিবর্তে আমাদের প্যাকেজটি এটির দর্শন করে।

এটি কীভাবে ব্যবহার করা যায় তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

@javascript('key', 'value')

রেন্ডার করা ভিউ আউটপুট দেবে:

<script type="text/javascript">window['key'] = 'value';</script>

সুতরাং আপনার ব্রাউজারে এখন আপনি একটি মূল ভেরিয়েবল অ্যাক্সেস করতে পারেন:

console.log(key); //outputs "value"

আপনি একটি একক যুক্তিও ব্যবহার করতে পারেন:

@javascript(['key' => 'value'])

যা প্রথম উদাহরণ হিসাবে একই আউটপুট হবে।

এমন একটি নেমস্পেস সেটআপ করতে আপনি কনফিগার ফাইলটিও ব্যবহার করতে পারেন যেখানে সমস্ত রফতানি করা জাভাস্ক্রিপ্ট ভেরিয়েবলগুলি থাকা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.