我找不到對以下內容的解釋。為什么會這樣?
let mainArr = [ [1], [2] ]
let subArr = [1]
let result = mainArr.includes(subArr) *//output: false*
還
let mainArr = [ [1], [2] ]
let subArr = [1]
let result = mainArr.indexOf(subArr) *//output: -1*
這是我的原始代碼:
let mainArr = [ [ 'apple', 1 ], [ 'bat', 2 ], [ 'cookie', 2 ] ]
let subArr = [ [ 'apple', 1 ] ] *//with let subArr = [ 'apple', 1 ] will be also -1*
let result = mainArr.indexOf(subArr) *//output: -1*
我不明白...
uj5u.com熱心網友回復:
從檔案:
indexOf() 使用嚴格相等(與 === 或三重相等運算子使用的方法相同)將 searchElement 與 Array 的元素進行比較。
在這里,您嘗試比較不是原始值的陣列。
比較陣列的一種方法是迭代并檢查每個元素,Array#every如果它們具有相同的長度,則可以使用此方法。
然后,使用Array#some,檢查陣列subArr是否在 中mainArr。
const
mainArr = [ [1], [2] ],
subArr = [1];
const isEqual = (arr1 = [], arr2 = []) =>
arr1.length === arr2.length && arr1.every((e, i) => e === arr2[i]);
const result = mainArr.some(arr => isEqual(arr, subArr));
console.log(result);
uj5u.com熱心網友回復:
陣列[1]這是第一個元素mainArr的變數和其它陣列[1],這是的值subArr變數是不一樣的排列。它們是兩個不同的陣列,都以 1 作為唯一元素。這就是為什么你在呼叫時得到 false 而在呼叫includes時得到 -1的原因indexOf。如果您希望它是同一個陣列,您可以執行以下操作:
let subArr = [1]; // create the [1] array and store a reference to it inside the subArr variable
let mainArr = [subArr, [2]]; // assign the subArr variable as the first element of the mainArr array
let result = mainArr.includes(subArr); // result is true
uj5u.com熱心網友回復:
Objects在 javascript中考慮陣列。只有原始型別,如strings和integers,可以通過它們在 javascript 中的值進行比較。不幸的Objects是通過它們的參考(也就是它們存盤在記憶體中的位置)進行比較。-- 每次創建物件時,都會給它一個對存盤在記憶體中的空間的參考 -- 因此,即使物件可能看起來相同,但它的參考卻不是。
要比較兩者,您必須遍歷一個陣列并將每個值與第二個陣列的相應索引進行比較。就像是:
for (let i = 0; i < mainArr.length; i ){
if (mainArr[i] !== subArr[i]){
//not the same
} else {
continue
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/400863.html
標籤:javascript 数组 包括 指数
上一篇:如何編輯嵌套陣列并對Google表格中的一系列單元格進行更改?
下一篇:C 中如何列印和修改char
