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


91

আমি মানচিত্র এবং ভবিষ্যদ্বাণীতে কেবলমাত্র তফাতটি দেখি এটি mapহ'ল একটি অ্যারে ফিরিয়ে দেয় এবং forEachতা নয়। তবে, আমি forEachপদ্ধতির শেষ লাইনটিও বুঝতে পারি না " func.call(scope, this[i], i, this);"। উদাহরণস্বরূপ, " this" এবং " scope" একই অবজেক্টের উল্লেখ করে না this[i]এবং iলুপের বর্তমান মানকে উল্লেখ করছে?

আমি অন্য একটি পোস্টে লক্ষ্য করেছি যে কেউ বলেছেন " forEachআপনি যখন তালিকার প্রতিটি উপাদানের ভিত্তিতে কিছু করতে চান তখন ব্যবহার করুন You আপনি পৃষ্ঠায় জিনিসগুলি যুক্ত করতে পারেন, উদাহরণস্বরূপ, আপনি যখন" পার্শ্ব প্রতিক্রিয়া "চান তখন এটি দুর্দান্ত। আমি জানি না পার্শ্ব প্রতিক্রিয়া বলতে কী বোঝায়।

Array.prototype.map = function(fnc) {
    var a = new Array(this.length);
    for (var i = 0; i < this.length; i++) {
        a[i] = fnc(this[i]);
    }
    return a;
}

Array.prototype.forEach = function(func, scope) { 
    scope = scope || this; 
    for (var i = 0, l = this.length; i < l; i++) {
        func.call(scope, this[i], i, this); 
    } 
}

পরিশেষে, জাভাস্ক্রিপ্টে এই পদ্ধতির কোনও বাস্তব ব্যবহার রয়েছে (যেহেতু আমরা একটি ডেটাবেস আপডেট করছি না) এই জাতীয় সংখ্যার কারসাজি করা ছাড়া অন্য:

alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.

কোন উত্তরের জন্য ধন্যবাদ।


আপনি যেমনটি করেছিলেন mapএবং তেমন কোনও কীভাবে কোনও জাতির জাভাস্ক্রিপ্টের কোনও সংজ্ঞা পেতে পারেন forEach? গুগল থেকে আমি যা কিছু পাই তা হ'ল ব্যবহারের স্পেসিফিকেশন এবং টিউটোরিয়াল।
উড্রোশিগেরু

উত্তর:


95

আপনার উদাহরণের মধ্যে mapএবং এর forEachমধ্যে অপরিহার্য পার্থক্যটি হ'ল forEachমূল অ্যারে উপাদানগুলিতে কাজ করে, তবে mapফলস্বরূপ স্পষ্টতই একটি নতুন অ্যারে প্রদান করে।

সঙ্গে forEachমূল অ্যারের মধ্যে প্রতিটি উপাদান - এবং ঐচ্ছিকরূপে পরিবর্তন - আপনার সাথে কিছু পদক্ষেপ গ্রহণ করা হয়। forEachপদ্ধতি ফাংশন আপনি প্রতিটি উপাদানের জন্য প্রদান রান, কিন্তু কিছুই ফেরৎ ( undefined)। অন্যদিকে, mapঅ্যারের মধ্য দিয়ে পদচারনা করে প্রতিটি উপাদানকে একটি ফাংশন প্রয়োগ করা হয় এবং ফলাফলটিকে নতুন অ্যারে হিসাবে প্রকাশ করে

এর সাথে "পার্শ্ব প্রতিক্রিয়া" forEachহ'ল আসল অ্যারেটি পরিবর্তন করা হচ্ছে। "কোনও পার্শ্ব প্রতিক্রিয়া" এর mapঅর্থ হ'ল আইডোমেটিক ব্যবহারের ক্ষেত্রে মূল অ্যারে উপাদানগুলি পরিবর্তন করা হয় না ; নতুন অ্যারে হ'ল মূল অ্যারেতে প্রতিটি উপাদানকে এক থেকে এক ম্যাপিং - ম্যাপিং রূপান্তরটি আপনার সরবরাহিত ক্রিয়াকলাপ being

কোনও ডাটাবেস জড়িত নেই এর অর্থ এই নয় যে আপনাকে ডেটা স্ট্রাকচারের উপর পরিচালনা করতে হবে না, যা সর্বোপরি যে কোনও ভাষায় প্রোগ্রামিংয়ের মূল উপাদান। আপনার শেষ প্রশ্নের হিসাবে, আপনার অ্যারেতে কেবল সংখ্যা নয়, তবে অবজেক্টস, স্ট্রিং, ফাংশন ইত্যাদি থাকতে পারে,


4
ভবিষ্যতের নোট: এই উত্তরটি আসলে বাজে; .mapযা .forEachকিছু করতে পারে তা করতে পারে (সংশোধনকারী উপাদানগুলি সহ), এটি কেবল পুনরাবৃত্তকারী ফাংশন থেকে নির্মিত একটি নতুন তালিকা দেয়।
ট্র্যাভিস ওয়েব

6
অতীত থেকে প্রতিক্রিয়া: আমি শ্রদ্ধার সাথে একমত। .map()একটি নতুন অ্যারে তৈরি করে, এবং আসলটি পরিবর্তন করে না। আপনি নিজেই ম্যাপযুক্ত অ্যারেটিকে সংশোধন করতে পারেন, তবে এটি যদি খুব সংবেদনহীন না হয় তবে এটি খুব কমই অ-অহঙ্কারী হবে। .forEach(), একইরূপে, প্রতিটি উপাদানটিতে এটির কার্যকারিতা প্রয়োগ করে তবে সর্বদা ফিরে আসে undefined। উপরোক্ত সমস্ত কিছু সত্ত্বেও, ওপি অ্যারে প্রোটোটাইপে যুক্ত তার নিজস্ব নির্দিষ্ট কার্যাদি সম্পর্কেও জিজ্ঞাসা করছে; অতীতে এখানে কোনও ইএস 5 ছিল না।
কেন রেডলার

4
এমন কিছু এখনও নেই যা forEachআপনি করতে পারবেন না map। আপনি কেবলমাত্র রিটার্ন মানটি সম্পর্কে যত্ন নিতে পারেন নি mapএবং আপনার কাছে একটি ছিল forEach। পার্থক্যটি হ'ল mapফলাফলের উপর ভিত্তি করে আপনি কোনও নতুন অ্যারে তৈরি করতে চান না এমন কাজের জন্য এটি ব্যবহার করা অত্যন্ত অকার্যকর । সুতরাং তাদের জন্য, আপনি ব্যবহার করুন forEach
অকর্মা

4
@ পোকে: .. এবং তেমনি, আপনি সরল পুরাতন forলুপ দিয়ে যা যা প্রয়োজন তা করতে পারেন । "কার্যকারিতা" এর কিছুটা পার্থক্য রয়েছে বলে আমি দ্বিমত পোষণ করি না, তবে কারও যুক্তি যে অন্যরকম কিছু যাদু আছে অন্যটি যেভাবে অর্জন করতে পারে তা আমি মনে করি না। যদিও সেখানে আসলে, একটি জিনিস যা mapকরতে পারে না: কোনও অ্যারে ফিরিয়ে দেয় না। সেখানে জাতীয় মত কার্মিক ফেভারিটে আচরণের হিসাবে অন্যান্য ভাষা থেকে প্রত্যাশা অনুযায়ী জীবনযাপন তার মধ্যে মান map, reduce, filter, ইত্যাদি যেমন, আপনি বাস্তবায়ন হতে পারে reduceRightঅনুরূপ বিল্ডিং ব্লক ব্যবহার করে, কিন্তু কেন শুধু ব্যবহার করবেন reduceRight?
কেন রেডলার

4
@ চিনটোভোক্রো, আপনার উদাহরণটি প্রত্যাবর্তিত অবজেক্টের ভিতরে নির্ধারিত করে স্পষ্টরূপে মূল অ্যারেটিকে পরিবর্তন করছে । এটি হ'ল সঠিক জিনিসটি আমরা বলছি সত্যই সম্ভব তবে বিভ্রান্তিকর এবং অহঙ্কারী। সাধারণত আপনি কেবল নতুন মানটি ফিরিয়ে দেন, এটিকে মূল অ্যারেতেও বরাদ্দ করেন না:b.val = b.val**2 a=[{val:1},{val:2},{val:3},{val:4}]; a.map((b)=>{b.val**2}); JSON.stringify(a);
কেন রেডলার

66

দুটি পদ্ধতি মধ্যে মূল পার্থক্য ধারণাগত এবং রচনাশৈলীসংক্রান্ত হল: আপনি এই ব্যবহার forEachযখন আপনি কিছু করতে চান করতে বা সঙ্গে একটি অ্যারের প্রতিটি উপাদান ( "সঙ্গে" করছেন কি আপনি যে পোস্টটি "পার্শ্ব প্রতিক্রিয়া" দ্বারা বোঝানো cite, আমি মনে করি হয়) আপনি mapযখন কোনও অ্যারের প্রতিটি উপাদান অনুলিপি এবং রূপান্তর করতে চান তখন আপনি ব্যবহার করেন (মূল পরিবর্তন না করে)।

উভয় mapএবং forEachঅ্যারেতে প্রতিটি আইটেমের একটি ফাংশন কল, এবং যে ফাংশনটি ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয়েছে, আপনি প্রায় এক কিছুই করতে পারবেন না এবং অন্যটির সাথে নয়। mapজায়গাটিতে কোনও অ্যারে সংশোধন করতে এবং / বা অ্যারে উপাদানগুলির সাথে কিছু করার জন্য এটি কুৎসিত হলেও সম্ভব :

var a = [{ val: 1 }, { val: 2 }, { val: 3 }];
a.map(function(el) {
    el.val++; // modify element in-place
    alert(el.val); // do something with each element
});
// a now contains [{ val: 2 }, { val: 3 }, { val: 4 }]

আপনার ব্যবহারের অভিপ্রায় হিসাবে তবে অনেক ক্লিনার এবং আরও সুস্পষ্ট forEach:

var a = [{ val: 1 }, { val: 2 }, { val: 3 }];
a.forEach(function(el) { 
    el.val++;
    alert(el.val);
});

বিশেষত, যেমন, আসল বিশ্বে যেমনটি ঘটে থাকে elতেমন কার্যকরভাবে মানব-পঠনযোগ্য পরিবর্তনশীল:

cats.forEach(function(cat) { 
    cat.meow(); // nicer than cats[x].meow()
});

একইভাবে, আপনি সহজেই forEachএকটি নতুন অ্যারে তৈরি করতে ব্যবহার করতে পারেন :

var a = [1,2,3],
    b = [];
a.forEach(function(el) { 
    b.push(el+1); 
});
// b is now [2,3,4], a is unchanged

তবে এটি ব্যবহার করা পরিষ্কার map:

var a = [1,2,3],
    b = a.map(function(el) { 
        return el+1; 
    });

পাশাপাশি নোট করুন যেহেতু mapএকটি নতুন অ্যারে তৈরি করা হয়েছে, এটি সম্ভবত কমপক্ষে কিছু কর্মক্ষমতা / স্মৃতি হিট করতে পারে যখন আপনার প্রয়োজন সমস্ত পুনরাবৃত্তি হয়, বিশেষত বড় অ্যারেগুলির জন্য - দেখুন http://jsperf.com/map-foreach

আপনি কেন এই ফাংশনগুলি ব্যবহার করতে চান, জাভাস্ক্রিপ্টে অ্যারে ম্যানিপুলেশন করার জন্য যে কোনও সময় এগুলি সহায়ক হয়, যা (এমনকি আমরা কেবল ব্রাউজারের পরিবেশে জাভাস্ক্রিপ্টের কথা বলছি) প্রায়শই প্রায়শই হয় আপনি এমন একটি অ্যারে অ্যাক্সেস করছেন যা আপনি নিজের কোডে হাতে লিখে নিচ্ছেন না। আপনি পৃষ্ঠায় DOM উপাদানগুলির একটি অ্যারে, বা AJAX অনুরোধ থেকে নেওয়া ডেটা, বা ব্যবহারকারীর দ্বারা কোনও ফর্মের মধ্যে প্রবেশ করা ডেটা নিয়ে কাজ করছেন। একটি সাধারণ উদাহরণ যা আমি বহন করি তা হ'ল বাহ্যিক এপিআই থেকে ডেটা টান, যেখানে আপনি নিজের পছন্দ mapমতো ফর্ম্যাটে ডেটা রূপান্তর করতে ব্যবহার করতে পারেন এবং তারপরে forEachএটি আপনার ব্যবহারকারীর কাছে প্রদর্শন করতে আপনার নতুন অ্যারেতে পুনরাবৃত্তি করতে ব্যবহার করতে পারেন ।


আমি .map()ইনলাইন উপাদানগুলিকে সংশোধন করতে সমস্ত সময় লোককে দেখছি । আমি ছাপের মধ্যে ছিলাম যে .mapওভার ব্যবহারের প্রধান সুবিধা ছিল.forEach
ov

4
@ শেভি আমি বিশ্বাস করি যে আপনি ফলাফলের অ্যারে তৈরি করতে চান কিনা তার ভিত্তিতে আপনার চয়ন করা উচিত। .mapহ্যাঁ, উপাদানগুলি সংশোধন করতে পারে তবে এটি আপনার প্রয়োজন হয় না এমন একটি অ্যারে তৈরি করবে। আপনি কীভাবে একজন বা অন্যটি বেছে নিয়েছেন তা পাঠকের অনুমান করতে দেয় যে আপনার কোনও পার্শ্ব প্রতিক্রিয়া রয়েছে কি না
Leewz

16

ভোট দেওয়া উত্তর (কেন রেডলারের কাছ থেকে) বিভ্রান্তিকর।

কম্পিউটার বিজ্ঞানের একটি পার্শ্ব প্রতিক্রিয়া মানে কোনও ফাংশন / পদ্ধতির সম্পত্তি বিশ্বব্যাপী রাষ্ট্রের [উইকি] পরিবর্তন করে । কিছু সংকীর্ণ অর্থে, এটিতে যুক্তি না দিয়ে বৈশ্বিক রাষ্ট্র থেকে পড়াও অন্তর্ভুক্ত থাকতে পারে। অপরিহার্য বা ওও প্রোগ্রামিংয়ে, পার্শ্ব প্রতিক্রিয়া বেশিরভাগ সময় উপস্থিত হয়। এবং আপনি সম্ভবত এটি উপলব্ধি না করে এটি ব্যবহার করছেন।

মধ্যে significiant পার্থক্য forEachএবং mapযে mapসময়, বরাদ্দ মেমরি এবং দোকানে ফেরত মান forEachএটা দূরে ছোঁড়ার। আরও তথ্যের জন্য এমকা স্পেস দেখুন ।

কারণ মানুষ বলে হিসাবে forEachব্যবহার করা হয় যখন আপনি চান একটি পার্শ্ব প্রতিক্রিয়া যে ফেরত মান forEachসর্বদা undefined। যদি এর কোনও পার্শ্ব প্রতিক্রিয়া না থাকে (বৈশ্বিক রাষ্ট্র পরিবর্তন করে না), তবে ফাংশনটি কেবল সিপিইউ সময় নষ্ট করছে। একটি অনুকূলিতকরণ সংকলক এই কোড ব্লকটিকে মুছে ফেলবে এবং এটিকে চূড়ান্ত মান ( undefined) দিয়ে প্রতিস্থাপন করবে ।

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

var a = [1,2,3]; //original
var b = a.map( function(x,i){a[i] = 2*x; return x+1} );
console.log("modified=%j\nnew array=%j",a,b);
// output:
// modified=[2,4,6]
// new array=[2,3,4]

4
এই প্রশ্ন এবং এর উত্তর এবং মন্তব্যগুলি প্রতি বছর কয়েক বছর পিছনে চেনাশোনা করতে মজাদার। মেমরি বরাদ্দের ক্ষেত্রে জেএসে যেভাবে মানচিত্রটি প্রয়োগ করা হয় তা হ'ল আরেকটি দুর্দান্ত কোণ।
কেন রেডলার

7

এটি একটি অপ্রত্যাশিত উত্তর সহ একটি সুন্দর প্রশ্ন।

নিম্নলিখিত সরকারী বিবরণArray.prototype.map() উপর ভিত্তি করে ।

এমন কিছু নেই যা forEach()করতে map()পারে না। অর্থাৎ map()একটি হল কঠোর সুপার সেট এর forEach()

যদিও map()সাধারণত একটি নতুন অ্যারে তৈরি করতে ব্যবহার করা হয়, এটি হতে পারে এছাড়াও বর্তমান অ্যারের পরিবর্তন করতে ব্যবহৃত হবে। নিম্নলিখিত উদাহরণে এই প্রকাশ:

var a = [0, 1, 2, 3, 4], mapped = null;
mapped = a.map(function (x) { a[x] = x*x*x; return x*x; });
console.log(mapped); // logs [0, 1, 4, 9, 16]  As expected, these are squares.
console.log(a); // logs [0, 1, 8, 27, 64] These are cubes of the original array!!

উপরের উদাহরণে, aসুবিধামত যে এই ধরনের হয় a[i] === iজন্য i < a.length। তবুও, এটি এর শক্তি map()এবং বিশেষত এটিতে অ্যারে পরিবর্তিত করার ক্ষমতা প্রদর্শন করে ।

দ্রষ্টব্য 1:
সরকারী বিবরণ থেকে বোঝা যাচ্ছে যে map()এমনকি যে অ্যারে বলা হয় এটি দৈর্ঘ্যও পরিবর্তন করতে পারে ! তবে আমি এটি করার (একটি ভাল) কারণ দেখতে পাচ্ছি না।

Note2:
যদিও map()মানচিত্রের একটি সুপার-সেট forEach(), forEach()এখনও ব্যবহার করা উচিত যেখানে একটি পরিবর্তন একটি প্রদত্ত অ্যারের ক্ষুধা। এটি আপনার উদ্দেশ্যগুলি পরিষ্কার করে।

আশা করি এটি সাহায্য করেছে।


8
প্রকৃতপক্ষে 1 টি জিনিস রয়েছে যা প্রতিটি মানচিত্রটি করতে পারে যা ম্যাপটি করতে পারে না - কোনও অ্যারে ফিরিয়ে দেয় না।
আন্তি হাপাল

4
আপনি mapped = a.map(function (x, i, arr) { arr[i] = x * x * x; return x * x; });.
স্কেপড

@ pdoherty926 সত্য, তবে এটি a.forEach(function(x, i, arr) { ...আবারও হতে পারে, যখন আপনি যখন প্রতিটি মূল আইটেমকে এক অ্যারে থেকে অন্য অ্যারে মানচিত্রের বিপরীতে রূপান্তর করার ইচ্ছা
কনফি

@ কননি: সম্মত এছাড়াও, দয়া করে একটি অনুরূপ প্রশ্নের এই উত্তরটি দেখুন ।
সুমুখ বার্ভে

3

আপনি mapযেমন এটি ব্যবহার করতে পারেন forEach

এটি এর চেয়ে বেশি কাজ করবে, তবে।

scopeএকটি স্বেচ্ছাসেবী বস্তু হতে পারে; এটি কোনওভাবেই অগত্যা নয় this

এর প্রকৃত ব্যবহার রয়েছে কিনা mapএবং forEachসেইসাথে জিজ্ঞাসা করতে হবে যে এর জন্য আসল ব্যবহার রয়েছে forবা whileলুপগুলি রয়েছে কি না ask


তবে কেন এখানে "সুযোগ" এবং "এটি" উভয়ই বলা হচ্ছে: func.call (স্কোপ, এটি [i], i, এটি); স্কোপ কি কোনও পরামিতি নয় যা বর্তমান বস্তুর সমান, যা "এটি"?
জনমারলিনো

না, এটি বর্তমান বস্তুর সমান হতে পারে। অবজেক্টটি নিজেই অ্যারেতে তৃতীয় প্যারামিটার হিসাবে পাস করা হয়। scope = scope || thisএর অর্থ "যদি scopeমিথ্যা হয় (অপরিজ্ঞাত, নাল, মিথ্যা, ইত্যাদি) এর thisপরিবর্তে স্কোপ সেট করে এবং চালিয়ে যায়"।
ওম্বলটন

এটির সমান না হলে আপনি কি আমাকে একটি উদাহরণের সাথে লিঙ্ক করতে পারেন?
জনমারলিনো


1

পূর্ববর্তী সমস্ত প্রশ্ন সঠিক হলেও আমি অবশ্যই একটি আলাদা পার্থক্য করব। ব্যবহার mapএবং forEachউদ্দেশ্য অভিপ্রায় করতে পারে।

আমি mapযখন বিদ্যমান উপাত্তগুলিকে কিছু উপায়ে রূপান্তর করছি তখন আমি এটি ব্যবহার করতে চাই (তবে এটি নিশ্চিত করতে চাই যে মূল ডেটা অপরিবর্তিত রয়েছে।

আমি forEachযখন সংগ্রহ স্থানে পরিবর্তন করছি তখন আমি ব্যবহার করতে চাই like

এই ক্ষেত্রে,

var b = [{ val: 1 }, { val: 2 }, { val: 3 }];
var c = b.map(function(el) {
    return { val: el.val + 1 }; // modify element in-place
});
console.log(b);
//  [{ val: 1 }, { val: 2 }, { val: 3 }]
console.log(c);
//  [{ val: 3 }, { val: 4 }, { val: 5 }]

থাম্ব যখন আপনি নিশ্চিত হচ্ছে আমার নিয়ম mapআপনি সবসময় কিছু নতুন বস্তু / মান তৈরি করছেন উৎস তালিকাটির প্রতিটি উপাদানের জন্য ফিরে যাওয়ার এবং ফিরে শুধু প্রতিটি উপাদান কিছু অপারেশন সম্পাদন বদলে এটা।

আপনার বিদ্যমান তালিকাটি সংশোধন করার কোনও সত্যিকারের প্রয়োজন না থাকলে এটি এটিকে যথাযথভাবে পরিবর্তিত করে তোলা অর্থবোধ করে না এবং কার্যকরী / অপরিবর্তনীয় প্রোগ্রামিং শৈলীতে আরও ভাল ফিট করে।


1

টিএল; ডিআর উত্তর -

মানচিত্র সর্বদা অন্য অ্যারে প্রদান করে।

forEach না। এটি কী করে তা স্থির করা আপনার উপর নির্ভর করে। আপনি চাইলে একটি অ্যারে ফিরিয়ে দিন বা না চাইলে অন্য কিছু করুন।

নমনীয়তা হ'ল নির্দিষ্ট পরিস্থিতি situations এটি যদি আপনি যার সাথে লেনদেন করছেন তা না হলে মানচিত্রটি ব্যবহার করুন।


0

আবারও, আমি মনে করি একজন নেক্রোম্যান্সার হিসাবে 5 বছর আগে জিজ্ঞাসা করা একটি প্রশ্নের জবাব যুক্ত করেছিলাম (সুখের সাথে বরং সাম্প্রতিক ক্রিয়াকলাপ রয়েছে, তাই আমি কেবল মৃতদের বিরক্ত করছি না :) :)

অন্যরা ইতিমধ্যে ফাংশনগুলির মধ্যে পার্থক্য সম্পর্কিত আপনার মূল প্রশ্নটি সম্পর্কে পোস্ট করেছে। না হইলে...

জাভাস্ক্রিপ্টে এই পদ্ধতির কোনও বাস্তব ব্যবহার রয়েছে (যেহেতু আমরা একটি ডেটাবেস আপডেট করছি না) এই জাতীয় সংখ্যাগুলি হস্তক্ষেপ করা ছাড়া:

... এটি আপনার কাছে জিজ্ঞাসা করা উচিত মজার। ঠিক আজই আমি একটি কোডের টুকরো লিখেছি যা রূপান্তরের জন্য মানচিত্র ব্যবহার করে নিয়মিত প্রকাশ থেকে একাধিক ভেরিয়েবলকে বিভিন্ন মান নির্ধারণ করে। এটি একটি খুব জটিল পাঠ্য ভিত্তিক কাঠামোটিকে ভিজ্যুয়েজযোগ্য ডেটাতে রূপান্তর করতে ব্যবহৃত হয়েছিল ... তবে সরলতার জন্য, আমি তারিখের স্ট্রিংগুলি ব্যবহার করে একটি উদাহরণ উপস্থাপন করব কারণ সেগুলি সম্ভবত প্রত্যেকের জন্যই বেশি পরিচিত (যদিও, যদি আমার সমস্যাটি আসলে তারিখের সাথেই থাকত , মানচিত্রের পরিবর্তে আমি তারিখ-অবজেক্টটি ব্যবহার করতাম, যা নিজেরাই দুর্দান্তভাবে কাজটি সম্পন্ন করত)।

const DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3})Z$/;
const TEST_STRING = '2016-01-04T03:20:00.000Z';

var [
    iYear,
    iMonth,
    iDay,
    iHour,
    iMinute,
    iSecond,
    iMillisecond
    ] = DATE_REGEXP
        // We take our regular expression and...
        .exec(TEST_STRING)
        // ...execute it against our string (resulting in an array of matches)...
        .slice(1)
        // ...drop the 0th element from those (which is the "full string match")...
        .map(value => parseInt(value, 10));
        // ...and map the rest of the values to integers...

// ...which we now have as individual variables at our perusal
console.debug('RESULT =>', iYear, iMonth, iDay, iHour, iMinute, iSecond, iMillisecond);

সুতরাং ... যদিও এটি কেবল একটি উদাহরণ ছিল - এবং কেবলমাত্র তথ্যের জন্য খুব মৌলিক রূপান্তর ঘটেছে (কেবল উদাহরণের জন্য) ... মানচিত্র ছাড়াই এটি করা আরও অনেক ক্লান্তিকর কাজ হত।

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

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