第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何克服Js中的陣列突變

如何克服Js中的陣列突變

素胚勾勒不出你 2022-08-18 09:55:34
嘗試克服 js 函數中列表的突變。我花了幾個小時試圖使用諸如復制要使用的數組之類的技術。以及其他方法。我已將我的函數歸結為此處顯示的更基本的版本:list.slice()list = [[1,2],[3,4],[5,6]]function listadjust(b) {    for (i = 0; i < b.length; i++) {        if (i == (b.length-1)) {            b[i][1] = 1;        }    }    return b;}它意味著采用多維數組輸入并更改最后一個元素的第二個元素。(上面顯示的變量中的 6。任何克服這個問題的方法都會很棒。我不是一個程序員,只是需要一個非常簡單的工具,并對為什么它不起作用感到失望。謝謝!list
查看完整描述

4 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

JS 數組是一個引用,因此創(chuàng)建非引用副本的最簡單方法是將其轉換為字符串,然后再轉換回數組。添加以下代碼行作為函數中的第一行:

function listadjust(b) {
    b=JSON.parse(JSON.stringify(b));
...


查看完整回答
反對 回復 2022-08-18
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

與基元類型(即數字或字符串)不同,數組是引用類型。這意味著當您將數組分配給變量時,您分配的是內存地址而不是實際數組本身,因此您只需要在對數組進行任何修改之前進行深度克隆即可


list = [[1,2],[3,4],[5,6]]


const clone = (items) => items.map(item => Array.isArray(item) ? clone(item) : item);


function listadjust(b) {

    const arr = clone(b)

    for (i = 0; i < arr.length; i++) {

        if (i == (arr.length-1)) {

            arr[i][1] = 1;

        }

    }

    return arr;

}


查看完整回答
反對 回復 2022-08-18
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這是一個基本解決方案。


let listOne = [[1,2],[3,4],[5,6]];

let listTwo = [[4,7],[4,1],[2,4],[8,4]];

let listThree = [[1,2],[3,4],[5,6],[0,0,3,5],[2,5,7]];


function listAdjust(list, change = 1) {

    let newList = [...list];

    let last = newList[newList.length - 1];

    //Whatever we want to change it to

    last[1] = change;

    return newList;

}


console.log(listAdjust(listOne));

console.log(listAdjust(listTwo));

console.log(listAdjust(listThree));


// Which outputs to...

[ [ 1, 2 ], [ 3, 4 ], [ 5, 1 ] ]

[ [ 4, 7 ], [ 4, 1 ], [ 2, 4 ], [ 8, 1 ] ]

[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 0, 0, 3, 5 ], [ 2, 1, 7 ] ]

我更改添加了一些示例,以表明無論數組的長度如何,它都可以工作。我還更改了函數以接受選項第二個參數,即您要將其更改為的內容。如果您不希望“change = 1”在那里刪除它,但是如果您確實將函數中的“change”更改為您想要將其更改為的任何內容,則可以將其刪除。當然,您可能希望替換“change = 1”中的1,無論您希望默認值實際是什么。


編輯:我也不確定為什么人們會想出奇怪的復雜方法來“克隆”數組。您只需要使用ES6方法,即使用點差運算符??纯次胰绾?#39;讓newList = [...list];' 在代碼中?這基本上創(chuàng)建了一個與原始數組具有相同值的新數組,但無需簡單地更改對它的“引用”。


查看完整回答
反對 回復 2022-08-18
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

如果你的期望只是改變最后一項的第二個元素,就像這樣:

[[1,2],[3,4],[5,6]] -> [[1,2],[3,4],[5,1]]
[[4,3],[2,7],[8,4],[4,7]] -> [[4,3],[2,7],[8,4],[4,1]] 
[[1,2],[3,4]] -> [[1,2],[3,1]]

然后你可以這樣做:

function listadjust(b) {    const newArray = JSON.parse(JSON.stringify(b))
    newArray[newArray.length - 1][1] = 1
    return newArray;
}

編輯:抱歉,調整為不變異:P。


查看完整回答
反對 回復 2022-08-18
  • 4 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號