از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش پیوستن/به هم پیوستن رشته ها در جاوا اسکریپتStrings یکی از رایج ترین انواع داده های مورد استفاده در نرم افزار است – آنها نشان دهنده رشته هایی از کاراکترها هستند که ما آنها را به عنوان کلمات تجزیه می کنیم. الحاق رشته ها یک کار کاملاً استاندارد است، به خصوص که ما همیشه با رشته های ثابت سروکار نداریم. ما اغلب رشته ها را به صورت پویا ایجاد می کنیم، مانند الگوهای ES6 یا…
سرفصلهای مطلب
معرفی
رشته ها یکی از رایج ترین انواع داده های مورد استفاده در نرم افزار هستند – آنها نشان دهنده رشته هایی از کاراکترها هستند که ما آنها را به عنوان کلمات تجزیه می کنیم.
الحاق رشته ها یک کار کاملاً استاندارد است، به خصوص که ما همیشه با رشته های ثابت سروکار نداریم. ما اغلب رشته ها را به صورت پویا ایجاد می کنیم، مانند الگوهای ES6، یا به سادگی رشته ها را به هم متصل می کنیم تا رشته های جدید را ایجاد کنیم.
اگر میخواهید درباره ایجاد رشتههای قالببندی شده پویا بیشتر بخوانید – راهنمای ما برای الگوهای ES6/String Literals را در Node.js بخوانید!
در این آموزش، روش پیوستن/الحاق/الحاق رشته ها در جاوا اسکریپت را بررسی خواهیم کرد.
توجه داشته باشید: رشته ها هستند تغییرناپذیر، یعنی واقعا نمی توان آنها را تغییر داد. هر زمان که با یک عملیات تغییر تماس می گیرید روی یک رشته، یک کپی با تغییرات اعمال شده ساخته می شود و به جای نسخه اصلی برگردانده می شود.
با اپراتور + الحاق کنید
سادهترین و احتمالاً شهودیترین رویکرد برای الحاق رشتهها، استفاده از آن است +
اپراتور:
console.log("hello " + "world");
اجرای این کد کوتاه به این نتیجه می رسد:
hello world
می توان یک رشته در حافظه را به یک متغیر مرجع اختصاص داد و به جای الحاق مستقیم به شی، به آن اشاره کرد:
let firstWord = "hello ";
let secondWord = "world";
let newWord = firstWord + secondWord;
این نیز منجر به:
hello world
توجه داشته باشید: در اکثر موارد، شما می توانید به طور منطقی جایگزین a =
و +
با کوتاه نویسی +=
، که به شما امکان می دهد ارجاع به عملوند اول، که با متغیری که نتیجه را به آن اختصاص می دهید جایگزین می شود.
در عوض، میتوانید نسخه کوتاه را بنویسید:
let word = "hello ";
word += "world";
console.log(word);
شایان ذکر است که انواع داده های دیگر را نیز می توان در ترکیب قرار داد، و هر زمان که تبدیل ضمنی امکان پذیر باشد – جاوا اسکریپت انواع داده ها را به رشته ها “تطبیق” می کند.
به عنوان مثال، اعداد صحیح به راحتی به رشته تبدیل می شوند، بنابراین اگر سعی کنید یک عدد صحیح را به یک رشته متصل کنید – عدد صحیح قبل از الحاق تبدیل می شود. یک رشته ممکن است همیشه به یک عدد صحیح تبدیل نشود – مانند زمانی که یک عدد را نشان نمی دهد یا دارای قالب بندی فرد است، بنابراین به طور کلی، تبدیل آن آسان تر است. به یک رشته، از از جانب یک رشته:
var str = "hello";
var int = 21;
var boolean = true;
console.log(str+int);
console.log(str+boolean)
این باعث می شود که هر دو عدد بولی و صحیح به نمایش های رشته ای تبدیل شوند و سپس به رشته “hello” اضافه شوند:
hello21
hellotrue
String.prototype.concat()
این concat()
روش به طور خاص برای این کار ایجاد شده است – به به هم پیوستن رشته های. می توان آن را روی هر رشته ای فراخوانی کرد و رشته دیگری را می پذیرد تا به رشته فراخوان الحاق شود.
به یک معنا، شبیه به استفاده از دست کوتاه است +=
اپراتور:
let string1 = "Java";
let string2 = "Script";
console.log(string1.concat(string2));
این نتیجه در:
JavaScript
علاوه بر این، می توانید یک جداکننده را به عنوان اولین آرگومان تعیین کنید، که سپس بین تمام رشته های پیوسته اضافه می شود:
let string1 = "Java";
let string2 = "Script";
console.log(string1.concat(", ", string2));
این نتیجه در:
Java, Script
Array.prototype.join()
این join()
روش از Array
کلاس برای پیوستن عناصر یک آرایه به یک رشته، با جداکننده پیشفرض یک کاما (,
).
این به ما امکان می دهد تا با تعداد بیشتری از رشته ها به روشی بسیار مختصرتر برخورد کنیم، و خواندن یک فایل در یک آرایه، یا کار با آرایه ای از رشته ها که می خواهید به یکدیگر بپیوندید، بی سابقه نیست.
اگر هیچ آرگومانی را به متد وارد نکنید – از مقدار پیشفرض برای محدود کردن رشتههای بهتازگی استفاده میشود. بیایید از یک رشته خالی عبور کنیم تا از آن بگذریم و مانند آنچه قبلا دیدهایم به آنها بپیوندیم:
let elements = ("JavaScript", "HTML", "CSS");
console.log(elements.join(""));
این نتیجه در:
JavaScriptHTMLCSS
از کدام رویکرد استفاده کنیم؟
توصیه شده است برای ترجیح دادن concat()
به جای عملگر + تابع، به دلیل مزایای عملکرد. با این حال، این در واقع همیشه برقرار نیست و چندین فرض را در ذهن دارد.
اول از همه – تعداد رشتههایی که به هم متصل میکنید در این امر نقش دارد، و همچنین عوامل دیگری که ممکن است حتی از آنها آگاه نباشید. بیایید محک بزنیم concat()
روش و همچنین +
اپراتور:
console.time('Concatenating with Operator');
concatWithOperator();
console.timeEnd('Concatenating with Operator');
console.time('Concatenating with Function');
concatWithFunction();
console.timeEnd('Concatenating with Function');
function concatWithOperator() {
let result = "";
for (let i = 0; i < 10000; i++) {
result += i;
}
}
function concatWithFunction() {
let result = "";
for (let i = 0; i < 10000; i++) {
result = result.concat(i);
}
}
این نتیجه در:
Concatenating with Operator: 3.232ms
Concatenating with Function: 1.509ms
اما صبر کنید، بیایید محیط را تغییر دهیم و این را اجرا کنیم روی یک ماشین متفاوت:
Concatenating with Operator: 1.985ms
Concatenating with Function: 1.990ms
و بیایید آن را اجرا کنیم روی را یکسان دوباره ماشین:
Concatenating with Operator: 2.030ms
Concatenating with Function: 0.934ms
زمان های اجرا بسیار متفاوت است (اگرچه، همه آنها از نظر سرعت قابل قبول هستند). همچنین شایان ذکر است که بیانیه رسمی از MDN، در مورد مزایای عملکرد:
اکیداً توصیه می شود که از عملگرهای انتساب (+، +=) به جای متد ()concat استفاده شود.
با توجه به این واقعیت که ممکن است عجیب به نظر برسد concat()
عملکرد بهتری نسبت به اپراتورها در تست ها دارد یا در بدترین حالت ممکن است یکسان سرعت. چه چیزی می دهد؟ خوب، محک زدن کدهایی مانند این به آسانی اجرای آن و مشاهده نتایج نیست.
مرورگر شما، نسخه آن، و همچنین بهینهسازیای که استفاده میکند ممکن است از ماشینی به ماشین دیگر متفاوت باشد، و ویژگیهایی مانند آنها واقعا بر عملکرد تاثیر میگذارند. به عنوان مثال، ما استفاده کرده ایم رشته های مختلف در الحاق، آنهایی که از تکرار ایجاد می شوند. اگر بخواهیم از همان رشته استفاده کنیم، یک بهینه ساز مانند V8 گوگل، استفاده از رشته را بیشتر بهینه می کند.
کد خود را تست و تایید کنید بهجای اینکه توصیهها را به صورت واقعی دریافت کنید. همه ماشینها و محیطها یکسان نیستند و چه چیزی عالی عمل میکند روی یکی، ممکن است عالی کار نکند روی یکی دیگر. این را در هنگام ایجاد برنامه ها نیز در نظر بگیرید.
نتیجه
ما نگاهی به روش الحاق رشته ها در جاوا اسکریپت با استفاده از آن انداخته ایم +
اپراتور، join()
روش از Arrays
کلاس و همچنین concat()
روش از String
کلاس
ما نگاهی به موضع رسمی انداختهایم و آزمایشهای خود را انجام دادهایم تا ببینیم کدام رویکرد مؤثرتر است – و طبق معمول، بستگی دارد روی عوامل مختلف
منتشر شده در 1403-01-14 11:24:03