【问题标题】:Trying to duplicate items within an array [duplicate]试图复制数组中的项目[重复]
【发布时间】:2021-03-03 18:17:17
【问题描述】:

试图复制数组中的项目。我正在使用这个函数,但是当我尝试运行它时它一直返回这个错误。

[4, "尤利西斯", 42, "假"]

function doubleTrouble(array){
for (let i = 0; i < array.length; i++){
    array.splice(i, 0, array[i]);
}
}

错误:

<--- Last few GCs --->

[5700:000002D91C63EFF0]     6774 ms: Scavenge 1617.8 (1635.3) -> 1602.0 (1635.3) MB, 0.2 / 0.0 ms  (average mu = 0.937, current mu = 0.936) allocation failure 
[5700:000002D91C63EFF0]     6794 ms: Scavenge 1617.8 (1635.3) -> 1602.0 (1635.3) MB, 0.2 / 0.0 ms  (average mu = 0.937, current mu = 0.936) allocation failure 
[5700:000002D91C63EFF0]     6818 ms: Scavenge 1617.8 (1635.3) -> 1602.0 (1635.3) MB, 0.2 / 0.0 ms  (average mu = 0.937, current mu = 0.936) allocation failure 


<--- JS stacktrace --->

FATAL ERROR: invalid array length Allocation failed - JavaScript heap out of memory
 1: 00007FF78E5606CF v8::internal::Isolate::ArchiveSpacePerThread+4607
 2: 00007FF78E4F4AA6 SSL_get_quiet_shutdown+65190
 3: 00007FF78E4F59A6 node::OnFatalError+294
 4: 00007FF78EDF843E v8::Isolate::ReportExternalAllocationLimitReached+94
 5: 00007FF78EDDCB0D v8::SharedArrayBuffer::Externalize+781
 6: 00007FF78EC75B3C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1468
 7: 00007FF78E9B9B8C v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+4348
 8: 00007FF78EE7F74D v8::internal::SetupIsolateDelegate::SetupHeap+456749
 9: 00007FF78EEA6DAC v8::internal::SetupIsolateDelegate::SetupHeap+618124
10: 00000217DFBC4127 

【问题讨论】:

标签: javascript arrays


【解决方案1】:

由于在每个循环中添加了一个项目,因此数组的长度会发生变化。

要克服这个问题,您可以从末尾开始迭代并添加双倍项目,直到索引为零。

function doubleTrouble(array) {
    let i = array.length;
   
    while (i--) array.splice(i, 0, array[i]);
}

const array = [4, "Ulysses", 42, "false"];

doubleTrouble(array);

console.log(array);

【讨论】:

  • 感谢我今天早上确实发生了这件事。我猜只是忽略了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2015-09-07
相关资源
最近更新 更多