JavaScript in_array 函式
在 JavaScript 中,如果我們希望遍歷從陣列中找到某個字串或數字,我們將不得不使用 includes()
方法。在引入這個約定之前,我們通常通過在陣列索引上啟動一個 for
迴圈來完成搜尋任務。
因為按值傳遞
和按引用傳遞
之間存在差異,includes()
方法並沒有給我們正確的答案。
我們將學習 includes()
方法的使用,我們將嘗試手動建立 includes()
方法功能,並瞭解如何建立該函式以防我們在本文中對物件進行檢查。
使用 includes()
方法從陣列中搜尋元素
includes()
方法通常在開頭使用陣列名稱(我們將在其中搜尋元素),然後是 dot(.)
。在下一部分中,我們將提到我們的元素。
程式碼片段:
var name = ['Rayan', 'Emily', 'Sarah'];
var check = 'Rayan';
console.log(name.includes(check));
輸出:
此方法以布林值返回結果,因此我們的輸出將被控制檯輸出為 true
或 false
。
使用 for
迴圈檢查元素是否存在
在此示例中,我們將建立一個陣列和一個變數來儲存要搜尋的元素。我們將建立一個簡單的 for
迴圈來檢查我們的元素並以 true
或 false
返回結果。
程式碼片段:
var a = 2;
var b = [1,2,3];
var verdict;
for(var i=0;i<b.length;i++){
if(b[i]===a){
verdict = true;
break;
}
else{
verdict = false;
}
}
console.log(verdict);
輸出:
使用函式從物件中檢查物件
JavaScript 有兩種資料型別,primitive
和 objects
。primitive
資料遵循 pass by value
,所以我們更容易執行上面的任務,但在 objects
的情況下,傳遞引用用於比較任何內容。
如果我們遵循一般的檢查方式或 includes()
方法,我們將無法得出完美的答案。
程式碼片段:
function Compare(b, a) {
if (b.length != a.length) return false;
var length = a.length;
for (var i = 0; i < length; i++) {
if (b[i] !== a[i]) return false;
}
return true;
}
function inArray(a, b) {
var length = b.length;
for(var i = 0; i < length; i++) {
if(typeof b[i] == 'object') {
if(Compare(b[i], a)) return true;
} else {
if(b[i] == a) return true;
}
}
return false;
}
var a = [1,2];
var b = [[1,2],3,4];
console.log(inArray(a,b));
輸出:
如果你排除特定的 b[i]
和 a
,則值將與 [1,2]
相同。你還會發現資料型別對於兩者來說都是物件
,但 a
和 b
都持有不同的引用,而且我們知道,物件支援按引用傳遞
。
我們不能通過選擇傳遞參考。我們在這裡所做的是,在我們的 inArray
函式中,我們已經確定 b
物件中是否有任何物件型別資料。
如果結果為真,我們使用 Compare
函式,我們明確檢查 b[i]
物件值和 a
物件值以獲得我們更喜歡的輸出。