[問題] 代碼執行問題

看板Ajax作者 (三更燈火五更雞)時間2年前 (2022/03/25 22:35), 2年前編輯推噓2(206)
留言8則, 3人參與, 2年前最新討論串1/1
各位版上的前輩高手們好:) 想請教各位,如果我想要把 Array 中的值乘以2,則代碼: let A = [9000, 8500, 5500, 6500]; let B = A.map(function (value, index, array){ return value*2; }); console.log(A) // [9000, 8500, 5500, 6500] - 原陣列不會被修改 console.log(B) // [18000, 17000, 11000, 13000] — X2的結果,新的陣列 第一組完全是預期中對結果,但如果改成下方: let A = [9000, 8500, 5500, 6500]; let B = A.map(function (value, index, array){ return array[index] = value*2 }); console.log(A) // [18000, 17000, 11000, 13000] - 原陣列竟然改變了?! console.log(B) // [18000, 17000, 11000, 13000] - 正常 請問為何第二組代碼的 console.log(A) 結果與 console.log(B) 一樣呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.120.144 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1648218938.A.A40.html ※ 編輯: d13751200344 (123.205.120.144 臺灣), 03/25/2022 22:37:34

03/26 00:13, 2年前 , 1F
你自己把他改掉了啊
03/26 00:13, 1F

03/26 00:14, 2年前 , 2F
array就是A
03/26 00:14, 2F

03/26 15:08, 2年前 , 3F
array 就是 A, 你第二個範例改成 forEach 然後 return 拿
03/26 15:08, 3F

03/26 15:08, 2年前 , 4F
掉也可以跑
03/26 15:08, 4F

03/26 21:25, 2年前 , 5F
謝謝樓上兩位的回答;不過我還是不懂為什麼兩組代碼
03/26 21:25, 5F

03/26 21:25, 2年前 , 6F
的AB呈現不同的結果@@?
03/26 21:25, 6F

03/26 21:36, 2年前 , 7F
主要是你對那個 array 做了異動, return array[index] * 2
03/26 21:36, 7F

03/26 21:36, 2年前 , 8F
就不會變了
03/26 21:36, 8F
文章代碼(AID): #1YFTCwf0 (Ajax)