數(shù)組索引
考慮一個數(shù)組[10径玖、9栋烤、8、7挺狰、6],如果我們想將此數(shù)組的值分配給任何變量买窟,則我們的定位方法將是const a = array [0]丰泊。如果我們想分配多個變量,那么繼續(xù)這樣做將很繁瑣始绍。
代碼1: 舊代碼做法
var array1 = [10, 9, 8, 7, 6];
var x = array1[0];
var y = array1[1];
var z = array1[2];
document.write("x = " + x + "<br>");
document.write("y = " + y + "<br>");
document.write("z = " + z + "<br>");
</script>
輸出:
x = 10
y = 9
z = 8
rest = 7, 6
因此瞳购,像這樣分配多個變量可以節(jié)省時間和代碼。但是亏推,應注意学赛,其余部分是剩余部分的集合數(shù)組年堆,而不是每個項目都單獨使用。
定義函數(shù)
想法是將一些常見或重復的任務放在一起并創(chuàng)建一個函數(shù)盏浇,這樣我們就可以調用該函數(shù)变丧,而不必為不同的輸入一次又一次地編寫相同的代碼。每個人都必須在JavaScript中使用過類似的功能绢掰。
- 代碼1:以常規(guī)形式定義功能痒蓬。
<!DOCTYPE html>
<html>
<body>
<p>Usual function in JavaScript</p>
<p id="demo"></p>
<script>
function myFunction(p1, p2) {
return p1 * p2;
}
document.getElementById("demo").innerHTML
= myFunction(4, 3);
</script>
</body>
</html>
輸出:
Usual function in JavaScript
12
- 代碼2:還有另一種方法將函數(shù)視為變量,而不是一個非常有用的技巧滴劲,但仍然是新事物攻晒。將函數(shù)保持在變量中,它利用像這樣的箭頭函數(shù)班挖。
<!DOCTYPE html>
<html>
<body>
<p>
Function treated as
variable in JavaScript:
</p>
<p id="demo"></p>
<script>
var myFunction = (p1, p2) => {
return p1 * p2;
}
document.getElementById("demo")
.innerHTML = myFunction(4, 3);
</script>
</body>
</html>
輸出:
Function treated as variable in JavaScript
12
在一行中定義功能
現(xiàn)在缀去,這個技巧真的很酷。如果你了解Python州丹,則可能知道lambda函數(shù)寓搬,該函數(shù)的行為與任意函數(shù)相同,并且用一行編寫末购。好吧破喻,我們不在JavaScript中使用lambda函數(shù),但是我們仍然可以編寫單行函數(shù)盟榴。
假設我們要計算兩個數(shù)字a和b的乘積曹质,我們可以在一行腳本中完成。我們不必專門編寫return語句擎场,因為這種定義方式已經意味著它將自行返回輸出羽德。
<!DOCTYPE html>
<html>
<body>
<p>
Function treated as
variable in JavaScript
</p>
<p id="demo"></p>
<script>
const productNum = (a, b) => a * b
document.getElementById("demo")
.innerHTML = myFunction(4, 3);
</script>
</body>
</html>
輸出:
Function treated as variable in JavaScript
12
布爾值
雖然每種編程語言都只有兩個布爾值True和False。JavaScript通過引入使用戶能夠創(chuàng)建bool的功能使它更進一步迅办。
與True和False不同宅静,它們通常分別稱為“ Truthy”和“ Falsy”。為避免混淆站欺,除0姨夹,F(xiàn)alse,NaN矾策,null磷账,“”之外的所有值均默認為Truthy。布爾的這種廣泛使用有助于我們有效地檢查狀況贾虽。
<script>
const a = !1;
const b = !!!0;
console.log(a);
console.log(b);
</script>
輸出:
<script>
False
True
</script>
過濾布爾值
有時我們可能希望過濾掉所有布爾值逃糟,例如從數(shù)組中說“ Falsy” 布爾值(0,F(xiàn)alse,NaN绰咽,null菇肃,“”),這可以通過結合使用map和filter函數(shù)來完成取募。在這里琐谤,它使用Boolean關鍵字過濾掉Falsy值。
<script>
<script>
arrayToFilter
.map(item => {
// Item values
})
.filter(Boolean);
</script>
Input: [1, 2, 3, 0, "Hi", False, True]
Output: [1, 2, 3, "Hi", True]
創(chuàng)建完全空的對象
如果要求在JavaScript中創(chuàng)建一個空的對象矛辕,我們的第一個轉到方法將在花括號中使用并將其分配給變量笑跛。但這不是空白對象,因為它仍然具有JavaScript的對象屬性聊品,例如proto和其他方法飞蹂。
可以通過一種方法來創(chuàng)建沒有任何對象屬性的對象。為此翻屈,我們使用字典并將其proto定義為空值陈哑。
<script>
/* Using .create() method to create
a completely empty object */
let dict = Object.create(null);
// dict.__proto__ === "undefined"
</script>
除非用戶另行定義,否則此對象將沒有默認的proto或其他屬性伸眶。
截斷數(shù)組
<script>
let arrayToTruncate = [10, 5, 7, 8, 3, 4, 6, 1, 0];
/* Specifying the length till where the
array should be truncated */
arrayToTruncate.length = 6;
console.log(arrayToTruncate)
</script>
輸出:如所見惊窖,我們必須知道要以這種方式截斷的數(shù)組的長度,否則將導致錯誤厘贼。此處的運行時間為O(k)界酒,其中k是將在數(shù)組中保留的元素數(shù)。
[10嘴秸、5毁欣、7、8岳掐、3凭疮、4]
合并對象
散布運算符(…)的引入使用戶可以輕松地合并到一個或多個對象,而先前通過創(chuàng)建一個單獨的函數(shù)來實現(xiàn)此操作可以實現(xiàn)合并串述。
代碼1:
<script>
function mergeObjects(obj1, obj2) {
for (var key in obj2) {
if (obj2.hasOwnProperty(key)) obj1[key] = obj2[key];
}
return obj1;
}
</script>
代碼2:通過使用擴展運算符执解,可以輕松實現(xiàn)上述任務,并且代碼也很清楚纲酗。
<script>
const obj1 = {};
// Items inside the object
const obj2 = {};
// Items inside the object
const obj3 = {...obj1, ...obj2};
</script>
條件檢查
檢查和遍歷條件是每種編程語言的重要組成部分衰腌。在JavaScript中,我們這樣做是:
代碼1:
<script>
if (codition) {
doSomething();
}
</script>
代碼2:但是觅赊,按位運算符的使用使檢查條件更加容易右蕊,并且使代碼僅一行:
<script>
condition && doSomething();
</script>
使用正則表達式替換所有字符
經常出現(xiàn)一種情況,每次出現(xiàn)一個字符或一個子字符串茉兰,但不幸的是.replace()方法僅替換一個出現(xiàn)的實例。我們可以通過將regex與.replace()方法配合使用來解決此問題欣簇。
<script>
var string = "GeeksforGeeks"; // Some string
console.log(string.replace(/eek/, "ool"));
</script>
輸出:
“ GoolsforGools”