string.charAt(x)
বন্ধনী চিহ্নিতকরণের পরিবর্তে আমার ব্যবহার করার কোনও কারণ আছে কি string[x]
?
string.charAt(x)
বন্ধনী চিহ্নিতকরণের পরিবর্তে আমার ব্যবহার করার কোনও কারণ আছে কি string[x]
?
উত্তর:
ব্র্যাকেট স্বরলিপি এখন আই 7 এবং নীচে বাদে সমস্ত বড় ব্রাউজারগুলিতে কাজ করে।
// Bracket Notation
"Test String1"[6]
// charAt Implementation
"Test String1".charAt(6)
এই কারণগুলির জন্য বন্ধুত্বগুলি ব্যবহার করা খারাপ ধারণা হিসাবে ব্যবহৃত হয়েছিল ( উত্স ):
এই স্বরলিপি আই 7 তে কাজ করে না। প্রথম কোড স্নিপেট আইই 7 এ অপরিবর্তিত থাকবে। যদি আপনি আপনার সমস্ত কোডে স্ট্রিংয়ের জন্য বন্ধনী চিহ্নিতকরণ ব্যবহার করতে চান এবং আপনি এতে স্থানান্তর করতে চান তবে
.charAt(pos)
এটি একটি আসল ব্যথা: বন্ধনগুলি আপনার কোডের সমস্ত ব্যবহৃত হয় এবং এটি কোনও স্ট্রিং বা অ্যারে / এর জন্য অনুসন্ধান করার কোনও সহজ উপায় নেই detect অবজেক্ট।আপনি এই চিহ্নটি ব্যবহার করে চরিত্রটি সেট করতে পারবেন না। যেহেতু কোনও ধরণের সতর্কতা নেই, এটি সত্যই বিভ্রান্তিকর এবং হতাশাব্যঞ্জক। আপনি যদি
.charAt(pos)
ফাংশনটি ব্যবহার করে থাকেন তবে এটি করার জন্য আপনাকে প্রলুব্ধ করা হত না।
এমডিএন থেকে :
স্ট্রিংয়ে পৃথক চরিত্রটি অ্যাক্সেস করার দুটি উপায় রয়েছে। প্রথমটি হ'ল
charAt
পদ্ধতি, ইসমাস্ক্রিপ্ট 3 এর অংশ:return 'cat'.charAt(1); // returns "a"
অন্য উপায়টি হ'ল অ্যারে-এর মতো অবজেক্ট হিসাবে স্ট্রিংকে আচরণ করা, যেখানে প্রতিটি স্বতন্ত্র অক্ষর একটি সংখ্যিক সূচকের সাথে মিল রাখে। এটি আইআই ব্যতীত বেশিরভাগ ব্রাউজারগুলি তাদের প্রথম সংস্করণ থেকে সমর্থন করেছে। এটি ECMAScript 5 তে প্রমিত করা হয়েছিল:
return 'cat'[1]; // returns "a"
দ্বিতীয় উপায়ে ECMAScript 5 সমর্থন প্রয়োজন (এবং কিছু পুরানো ব্রাউজারগুলিতে সমর্থিত নয়)।
উভয় ক্ষেত্রেই, একটি স্বতন্ত্র চরিত্র পরিবর্তন করার চেষ্টা করা কার্যকর হবে না, কারণ স্ট্রিংগুলি পরিবর্তনযোগ্য, যেমন, তাদের বৈশিষ্ট্যগুলি "লিখনযোগ্য" বা "কনফিগারযোগ্য" নয়।
str.charAt(i)
যদি আই 6 / আই 7 সামঞ্জস্যতা প্রয়োজন হয় তবে একটি সামঞ্জস্যের দৃষ্টিভঙ্গি থেকে ভাল।str[i]
আরও আধুনিক এবং IE8 + এবং অন্যান্য সমস্ত ব্রাউজারগুলিতে (সমস্ত এজ / ফায়ারফক্স / ক্রোম, সাফারি 2+, সমস্ত আইওএস / অ্যান্ড্রয়েড) কাজ করে।প্রান্তের ক্ষেত্রে তারা বিভিন্ন ফলাফল দিতে পারে।
'hello'[NaN] // undefined
'hello'.charAt(NaN) // 'h'
'hello'[true] //undefined
'hello'.charAt(true) // 'e'
CharAt ফাংশন কিভাবে সূচক একটি সংখ্যায় রূপান্তরিত হয় উপর নির্ভর করে বৈশিষ্ট ।
'hello'[undefined] // undefined
এবং'hello'.charAt(undefined) //h
null
মত কাজ করে undefined
, তবে এটি দেখুন: "hello"["00"] // undefined
তবে "hello".charAt("00") // "h"
এবং"hello"["0"] // "h"
[]
।
.charAt()
এর পরামিতিটির জন্য একটি অতিরিক্ত রূপান্তর সম্পাদন করে Number
। এফওয়াইআই, আজকাল প্রায় কোনও পারফরম্যান্সের পার্থক্য নেই।
স্ট্রিং.সিআরএআট () হ'ল মূল স্ট্যান্ডার্ড এবং সমস্ত ব্রাউজারে কাজ করে। IE 8+ এবং অন্যান্য ব্রাউজারগুলিতে, আপনি অক্ষর অ্যাক্সেস করতে বন্ধনী স্বাক্ষর ব্যবহার করতে পারেন তবে IE 7 এবং নীচে এটি সমর্থন করে না।
যদি কেউ সত্যিই আই some তে বন্ধনী স্বরলিপি ব্যবহার করতে চান, তবে স্ট্রিংটিকে একটি অ্যারেতে রূপান্তর করা str.split('')
এবং তারপরে এটি কোনও অ্যারে হিসাবে ব্যবহার করা বুদ্ধিমানের সাথে কোনও ব্রাউজারের সাথে সামঞ্জস্যপূর্ণ।
var testString = "Hello";
var charArr = testString.split("");
charArr[1]; // "e"
স্ট্রিং সূচক অ্যাক্সেসর বনাম charAt()
পদ্ধতিটি পরীক্ষা করার সময় খুব আকর্ষণীয় ফলাফল । মনে হচ্ছে ক্রোম একমাত্র ব্রাউজার যা charAt
আরও বেশি পছন্দ করে।
index
ক্রোমের ক্ষেত্রেও খুব দ্রুত।
আপনি যখন কোনও সূচক অ্যাক্সেস করার চেষ্টা করেন যা কোনও সংখ্যার সীমা ছাড়িয়ে যায় না বা কোনও পূর্ণসংখ্যা নয় not
string[x]
0 এবং এর মধ্যে একটি পূর্ণসংখ্যা হলে অক্ষরটি x
th ম স্থানে প্রদান করে এবং অন্যথায় ফিরে আসে ।string
x
string.length-1
undefined
string.charAt(x)
এখানেx
বর্ণিত প্রক্রিয়াটি ব্যবহার করে একটি পূর্ণসংখ্যায় রূপান্তরিত হয় (যা মূলত একটি পূর্ণসংখ্যার সংখ্যা হলে গোল হয় এবং যদি 0 হয় তবে ফিরে আসে) এবং তারপরে পূর্ণসংখ্যা 0 এবং এর মধ্যে যদি একটি ফাঁকা স্ট্রিং প্রদান করে তবে সেই অবস্থানে অক্ষরটি প্রদান করে ।x
x
parseInt(x)
NaN
string.length-1
এখানে কিছু উদাহরন:
"Hello"[313] //undefined
"Hello".charAt(313) //"", 313 is out of bounds
"Hello"[3.14] //undefined
"Hello".charAt(3.14) //'l', rounds 3.14 down to 3
"Hello"[true] //undefined
"Hello".charAt(true) //'e', converts true to the integer 1
"Hello"["World"] //undefined
"Hello".charAt("World") //'H', "World" evaluates to NaN, which gets converted to 0
"Hello"[Infinity] //undefined
"Hello".charAt(Infinity) //"", Infinity is out of bounds
আর একটি পার্থক্য হ'ল string[x]
কিছুই না করা (যা বিভ্রান্তিকর হতে পারে) এবং অর্পণ করা string.charAt(x)
একটি ত্রুটি (প্রত্যাশার মতো):
var str = "Hello";
str[0] = 'Y';
console.log(str); //Still "Hello", the above assignment did nothing
str.charAt(0) = 'Y'; //Error, invalid left-hand side in assignment
কারণ কেন বরাদ্দ string[x]
না কাজ, কারণ জাভাস্ক্রিপ্ট স্ট্রিং অপরিবর্তনীয় হয় ।
"😃".charAt(0)