我有一個包含元素的陣列,我的目標是對陣列中的一些元素進行切片,然后我想用一個新陣列重新分配原始陣列,該陣列是原始陣列的子串列,但似乎我做不到發生這種情況請幫忙。
let arr = [1,2,3,4,5]
function subList(arr){
for(let i = 0; i < arr.length; i ){
let res = arr.slice(0,i)
if(i === 3){
arr = res;
}
}
}
subList(arr)
console.log(arr)
// expected output [1,2,3]
uj5u.com熱心網友回復:
有很多方法可以做到這一點。
為什么它不適合你:
您正在將 傳遞給arr變數,并且由于它是理想的物件,因此您對它所做的任何更改都應該反映在外部。但是您實際上并沒有改變/更改傳遞的引數中的任何內容,而是重新分配它(使用arr=res)。所以這不會對arr外界造成任何改變。
如果您執行類似.push(),.pop()的操作,它們是對陣列的操作而不重新分配它,那實際上應該更改它。
splice()使用實際修改陣列而不是替換它的操作修改代碼的示例push:
let arr = [1,2,3,4,5]
function subList(arr){
for(let i = 0; i < arr.length; i ){
let res = arr.slice(0,i)
if(i === 3){
arr.splice(0,arr.length);
arr.push(...res);
break;
}
}
}
subList(arr)
console.log(arr)
uj5u.com熱心網友回復:
將索引傳遞給函式,然后return arr.slice(0, i);.
let arr = [1, 2, 3, 4, 5]
function subList(arr, i) {
return arr.slice(0, i);
}
console.log(subList(arr, 3));
uj5u.com熱心網友回復:
let list = [1,2,3,4,5]
function subList(arr,n){
for(let i = 0; i < arr.length; i ){
if(i === 3){
let res = arr.slice(0,i)
list = res;
}
}
}
subList(list,0)
console.log(list)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431563.html
標籤:javascript 数组
