در #javascript برای مقدار دهی پیش فرض به یک متغیر در صورتی که property با همون نام روی object تعریف نشده باشه
let node = {
name: "foo",
parent: { }
};
let {parent:{name:parentName='bar'}}= node;
console.log(parentName); // bar
#سطح_متوسطبازگرداندن چند مقدار از یک متد در #c_sharp با استفاده از Tuple
public Tuple<int, int> MultipleValue()
{
return Tuple.Create(1,2);
}
#سطح_پیشرفتهبعضی کدهای #CSS سرعت اجرای بالاتری نسبت به مشابه آنها دارد. به عنوان مثال کد زیر:
.cls1 > .cls2 > .cls3 {
...
}
سرعت اجرای بالاتری نسب به کد زیر دارد:.cls1 .cls2 .cls3 {
...
}
#فرانتاند #performance #سطح_مبتدیخواندن مقادیر آرایه ها و حذف آنها در یک زمان بدون استفاده از حلقه for در #javascript
let colors = ['first', 'second', 'third'];
while ( ( [item,...colors ] = colors ).length ) {
console.log(item);
}
#spread_syntax #سطح_متوسطاعتبار سنجی مقادیر داخل متغییرها در #PHP
استفاده از تابع
استفاده از تابع
filter_var
مثال: چک میکند که داده ورودی از نوع عددی است یا خیر:if (filter_var(10, FILTER_VALIDATE_BOOLEAN))مثال: چک میکند که داده ورودی یک آدرس ایمیل معتبر میباشد یا خیر:
{ ... }
if (filter_var('info@gmail.com', FILTER_VALIDATE_EMAIL))
{ ... }
#بکاند #سطح_مبتدیدر #react برای استفاده از شرط ها در #JSX می تونید از do expression که به تازگی در ECMAScript اضافه شده استفاده کنید. این ویژگی هنوز در stage-1 هست و در حال حاضر فقط در صورتی که از یک transpiler (مثل babel) استفاده می کنید قابل اجراست.
const aComponent = () => {
return (
<div>
{
do => {
if (condition && condition2 && !consition3) {
if (consition4) {
<p>foo</p>
} else if (condition5) {
<p>bar</p>
} else {
<p>baz</p>
}
} else {
<p>qux</p>
}
}
}
</div>
)
};
#سطح_پیشرفتهGitHub
GitHub - tc39/proposal-do-expressions: Proposal for `do` expressions
Proposal for `do` expressions. Contribute to tc39/proposal-do-expressions development by creating an account on GitHub.
در #Javascript از این راه برای کوتاه کردن کد بدون نوشتن صفرهای متوالی در اعدا استفاده کنید
for (let i = 0; i < 1e7; i++) { ... }
تمام این موارد true برمی گردونه1e0 === 1;
1e7 === 10000000;
2e1 === 20;
2e2 === 200;
#سطح_متوسطکپی گرفتن از یک جدول در #SQL
توسط دستور زیر میتوانید، ساختار یک جدول را کپی کرده و یک جدول جدید مانند جدول قبل خواهید داشت.
توسط دستور زیر میتوانید، ساختار یک جدول را کپی کرده و یک جدول جدید مانند جدول قبل خواهید داشت.
-- Copy structure and data#بانک_اطلاعاتی #mssql #سطح_مبتدی
SELECT * INTO NewTbl FROM Tbl1
-- Copy structure only
SELECT * INTO Tbl1_Copy FROM Tbl1 WHERE 1=0
-- Copy structure only
SELECT TOP(0) * INTO Tbl1_Copy FROM Tbl1
در #javascript از نحوه دستوری Destructuring assignment برای ذخیره مقادیر ایندکس های موردنظر از یک آرایه در چند متغیر طی یک دستور استفاده کنید:let colors =
['red', 'green', 'blue', 'black', 'purple'];
const [ , , thirdColor, , fifthColor] = colors;
console.log(thirdColor); // blue
console.log(fifthColor); // purple#destructuring_assignment #سطح_متوسط
👍1
تبدیل آرایه به CSV در #PHP
function array2csv($input, $delimiter = ',', $enclosure = '"')#بکاند #آرایه #CSV #سطح_پیشرفته
{
$fp = fopen('php://temp', 'r+');
fputcsv($fp, $input, $delimiter, $enclosure);
rewind($fp);
$data = fread($fp, 1048576);
fclose($fp);
return rtrim($data, "\n");
}
در #Javascript برای پیداکردن بیشترین مقدار در یک آرایه لازم نیست حتما از حلقه استفاده کنید. فقط آرایه رو با استفاده از spread operator ها به تابع ()Math.max پاس بدید:
#سطح_متوسط #spread_syntax
let values = [1, 999, 2];می تونید اعداد دیگه رو هم برای مقایسه با مقادیر آرایه اضافه کنید
Math.max(...values);
Math.max(...values, 1000, 998);یکی از کاربردهای این ترفند می تونه تعیین مقدار پیش فرض برای متغیرها باشه. در این مثال اگر عدد مثبت پیدا نشد مقدار پیش فرض صفر داده میشه
let negatives = [-123, -456, -789];
const aValue = Math.max(...negatives, 0);#سطح_متوسط #spread_syntax
👍1
در #CSS با این روش میتوانید هر جایی از صفحه را کاری کنید که با ماوس قابل انتخاب کردن نباشد:
.no-select {
-moz-user-select: -moz-none;
-moz-user-select: none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
#فرانتاند #سطح_متوسط👍1
تابع ()setState در #react بصورت ناهمگام (asynchronous) اجرا می شود و باعث مشکلاتی می شود بعنوان مثال:
this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
// this.state.count === 1, not 3
برای حل این مشکل یک تابع به ()setState پاس بدید:this.setState(prevState => ({ count: prevState.count + 1 }));
#سطح_متوسطتبدیل اعداد فارسی به انگلیسی در #javascript
const digits = '۰۱۲۳۴۵۶۷۸۹';
digits.replace(/[\u0660-\u0669\u06f0-\u06f9]/g,
function(c) {
return c.charCodeAt(0) & 0xf;
});
#کار_با_اعداد #سطح_متوسط❤1
روشی برای پاس ندادن پارامترهای میانی در #javascript
function method (p1, p2, p3, p4) {
console.log(
`${p1} ${p2} ${p3} ${p4}`);
}
method(...['first', , , 'last']);
#spread_syntax #سطح_متوسطهتوسط این تابع در #PHP میتوان چک کرد که آدرس #ایمیل وارد شده صحیح است یا خیر؟
#بکاند #سطح_پیشرفته
function isValidEmail($email)نکته: این تابع DNS سایت ارائه دهنده ایمیل را چک میکند تا آدرس ایمیل fake نباشد.
{
// Check email format
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
list($user, $host) = explode("@", $email);
//check, if host is accessible
if (!checkdnsrr($host, "MX") && !checkdnsrr($host, "A")) {
return false;
}
return true;
}
#بکاند #سطح_پیشرفته
هر دوی این توابع در #javascript اعداد انگلیسی را به فارسی تبدیل می کنند البته با این تفاوت که تابع دوم کلیه حروف بجز اعداد را از رشته وردی حذف می کند:
تابع اول:
تابع اول:
function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];
return n
.toString()
.replace(/\d/g, x => farsiDigits[x]);
}
تابع دوم:function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];
return n
.toString()
.split('')
.map(x => farsiDigits[x])
.join('');
}
خروجی تابع اول:toFarsiNumber('Two or 2 ?'); // Two or ۲ ?
خروجی تابع دوم:toFarsiNumber('Two or 2 ?'); // ۲
#سطح_متوسطچرا در #javascript باید یجای اپراتورهای '==' و '===' از ()Object.is استفاده کنیم؟
به خروجی این شرط ها نگاه کنید:
به خروجی این شرط ها نگاه کنید:
0 == ' ' //trueشاید برای حل این مشکل از اپراتور '===' بجای '==' استفاده می کنید اما این راه حل همه جا جواب نمیده، بعنوان مثال:
null == undefined //true
[1] == true //true
NaN === NaN //falseدر حالیکه خروجی ()Object.is برای تمام موارد مقدار قابل قبول تری هست:
Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true
#سطح_متوسط👍1