不修改原陣列的情況下反轉陣列

2021-10-21 21:11:21 字數 1495 閱讀 5053

問題:在不修改原陣列的情況下反轉陣列

大家都知道reverse(),但是這個方法是會改變原來的陣列,怎樣既可以訪問到原來的陣列,有可以讓新陣列實現元素反轉。

首先,複習一下在陣列的方法中,哪些是修改原有的陣列,哪些是生成新的陣列

es6新增的擴充套件運算子非常好用。

[...arr]就是複製陣列

let testarray =[0

,1,2

,5,6

];let newarray =

[...testarray]

.reverse()

;// 測試

console.

log(testarray)

;console.

log(newarray)

;

es5沒有擴充套件運算子,只能尋求別的方法。

從上面的複習可以看到,slice()擷取方法,生成新的陣列。

引數是切片啟示位置和結束位置,不帶引數時,就會返回乙個與原陣列一樣的新陣列。

因此用slice()也可以實現,生成乙個相同的新陣列。

let testarray =[0

,1,2

,5,6

];let newarray = testarray.

slice()

.reverse()

;// 測試

console.

log(testarray)

;console.

log(newarray)

;

let testarray =[0

,1,2

,5,6

];let newarray =

;for

(let i = testarray.length-

1; i >=

0; i--

)// 測試

console.

log(testarray)

;console.

log(newarray)

;

本質就是兩邊索引對應的陣列值的交換,用兩個指標來代表左右的索引,交換位置,然後往中間移動。

function

myreverse

(arr)

}// 測試

let input =[2

,5,9

,0,-

7];myreverse

(input)

;console.

log(input)

不影響原陣列的情況下,獲取陣列的最大值和最小值

假設有一數值陣列,如何在不影響原陣列的情況下,獲取陣列的最大值和最小值呢?廢話不多說直接上 1.我們用了最基礎的方法,遍歷整個陣列,用新陣列接收這些資料 注意,這個時候要深拷貝不然會該改變原陣列!在新陣列中排序操作 var arr 2,1,6,99,101,4,1,23 var newarr for...

OD入門 在不修改程式的情況下,取得合法驗證

這是乙個比較簡單的程式 源程式如下 include define password 1921512 int verify password char password void main else 當你隨意輸入password,程式會進行驗證。想要在不知道密碼的情況下就通過驗證該怎麼做呢?方法一 通...

陣列 不修改陣列找出重複的數字

不修改陣列找出重複的數字 題目 在乙個長度為n 1的陣列裡的所有數字都在1到n的範圍內,所以陣列中至少有乙個數字是重複的。請找出陣列中任意乙個重複的數字,但不能修改輸入的 陣列。例如,如果輸入長度為8的陣列,那麼對應的輸出是重複的數字2或者3。方法 我們把從1 n的數字從中間的數字m分為兩部分,前面...