تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ مهدی تیما
آخرین ویدیو
جامعه جاوا اسکریپت ایجاد شده در ۰۴ شهریور ۱۴۰۲

من یه چیزی رو متوجه نشدم وقتی ما شرط میزاریم که مثلا input بزرگ‌تر از text چی رو میاد برسی میکنه ؟

و دلیل این که ما استفاده کردیم از لوکال کامپیر چی بود دقیقا؟

یونی کد رو برسی میکنه یعنی چی؟

یعنی مثلا ما یه کلمه داریم به نام مهدی

مثلا یوکنی کد م میشه 54 - یونی کد ه میشه 78 - یونی کد د میشه 50 و یونی کد ی میشه 30 همه اینا رو با هم جمع میکنه مثلا میشه 300 خورده و همون رو میاد به با متغییر دیگه برسی میکنه و شرط رو چک میکنه

متوجه نشدم دقیقا میشه واضح توضیح بدید

سلام،

متوجه سؤالاتتون نشدم،

با مثال بپرسید.

محسن موحد ۰۵ شهریور ۱۴۰۲، ۱۴:۳۸

یه توضیح در مورد localcomper بدید که چی رو برسی میکنه ما دو تا رشته داریم

let text1 = 'mahdi'

let text2 = 'tima


If(text1 > text2)


این یعنی چی رو میان برسی میکنم و این شرط یعنی چی

if(text1.localcomper(text2))

مهدی تیما ۰۵ شهریور ۱۴۰۲، ۱۷:۱۰

LocaleCompare درست است.

فرض کنید دو رشته داریم:

let text1 = "a";
let text2 = "A";

وقتی از عملگر `>` برای مقایسه استفاده میکنیم:

if(text1 > text2) {
  console.log('text1 is greater than text2');
} else {
  console.log('text1 is not greater than text2');
}

این بخش میگوید `text1 is not greater than text2` چون کد یونیکود برای A (65) کمتر از کد یونیکود برای a (97) است. یعنی، "A" کوچکتر از "a" است.

برای زبان انگلیسی مقایسه با این عملگر مشکلی ندارد چون کاراکترها و یونیکدها مشخص هستند و اینطور نیست که یک کاراکتر برابر کاراکتر دیگری باشد ولی کد یونیکد متفاوتی داشته باشد. یعنی در زبان انگلیسی کد یونیکد تفاوت را نشان میدهد.

نتیجه: کاراکتر به کاراکتر کدهای یونیکد بررسی میشوند.


اما در مورد localecompare برای زبان هایی بجز انگلیسی،

مثلا در زبان فارسی، مثالی داریم:

let text3 = "ک";
let text4 = "ك";

هر دو کاراکتر "ک" هستند. ولی نتایج از دو عملگر متفاوت خواهد بود:

if(text3 > text4) {
  console.log('text3 is greater than text4');
} else {
  console.log('text3 is not greater than text4');
}

if اول جوابش true است و جواب "text3 is greater than text4" خواهد بود.

اما در مقایسه ای دیگر:

let text3 = "ک";
let text4 = "ك";
if(text3.localeCompare(text4, 'fa', { sensitivity: 'base' }) === 0) {
    console.log('They are considered equal with base sensitivity.');
} else {
    console.log('They are different.');
}

جواب شرط بالا 0 خواهد بود.

این دو کاراکتر براساس حروف پایه یکسان هستند، گرچه در ساختار باهم تفاوت دارند.

نتیجه: در زبان هایی بغیر از انگلیسی با locale روی منطقه ی زبانی تطبیق داده میشود تا ارزش معانی کلمات بدرستی تشخیص داده شود. (با توجه به قواعد زبانی محلی localeCompare این نوع جزئیات را در نظر می‌گیرد)

محسن موحد ۰۵ شهریور ۱۴۰۲، ۱۹:۱۰