我需要撰寫一個函式,該函式可以獲取不定數量的包含整數的陣列,并且它應該回傳 1 個陣列,這是這些陣列之間的累積對稱差。一次只比較兩個陣列。所以[1, 2, 3], [3, 4, 2], [1, 5, 3] 首先會導致[1, 4], (比較前兩個陣列),然后將其與第三個比較,最終結果是[4, 5, 3]. 我為前兩個陣列創建了一個回圈,但我不知道如何將它變成一個在每個步驟上執行相同操作的實際回圈。出于某種原因,使用arr[i]并arr[i 1]引發錯誤。到目前為止,這是我的代碼。
function test(...arr) {
let accumulator;
for (let i = 0; i < arr.length; i ) {
let common = arr[0].filter(a => arr[1].includes(a))
let arr0 = arr[0].filter(a => !common.includes(a))
let arr1 = arr[1].filter(a => !common.includes(a))
let merged = [...arr0, ...arr1]
accumulator = merged
}
return accumulator
}
console.log(test([1, 2, 3], [3, 4, 2], [1, 5, 3]))
這里accumulator是[1, 4],所以此時需要使用下一個陣列和累加器來執行整個操作,這就是我遇到的問題。
uj5u.com熱心網友回復:
您正在迭代ifrom 0to arr.length - 1。arr[i 1]在arr[arr.length]最后一次迭代中。已經越界了 您可以將回圈條件更改為i < arr.length - 1.
例子:
function test(...arr) {
let accumulator;
for (let i = 0; i < arr.length - 1; i ) {
let common = arr[i].filter(a => arr[i 1].includes(a))
let arr0 = arr[i].filter(a => !common.includes(a))
let arr1 = arr[i 1].filter(a => !common.includes(a))
let merged = [...arr0, ...arr1]
accumulator = merged
}
return accumulator
}
console.log(test([1, 2, 3], [3, 4, 2], [1, 5, 3]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/483799.html
標籤:javascript 数组
