Javascript RangeError:数组排列处的数组长度无效

Javascript RangeError:数组排列处的数组长度无效,javascript,arrays,typescript,array-splice,Javascript,Arrays,Typescript,Array Splice,我有一个相当标准的item函数,它抛出“RangeError:Invalid array length”。不幸的是,这种情况很少发生,而且是在生产中,因此很难捕捉到输入参数 这就是功能: 函数setProgress(项:SomeType[],id:string,someProperty:string){ 常量索引=items.findIndex(item=>item.id==id); const newItem:SomeType={…items[index],someProperty}; 返回[

我有一个相当标准的item函数,它抛出“RangeError:Invalid array length”。不幸的是,这种情况很少发生,而且是在生产中,因此很难捕捉到输入参数

这就是功能:

函数setProgress(项:SomeType[],id:string,someProperty:string){
常量索引=items.findIndex(item=>item.id==id);
const newItem:SomeType={…items[index],someProperty};
返回[…items.slice(0,索引),newItem,…items.slice(索引+1);
}
这是透明的(非丑陋的):

我尝试过使用不同的值,但无法重现此错误


你知道是什么和如何导致这种情况吗?

我在尝试传播类似数组的对象时遇到了以下情况:

let borken = [...this.state.data.get("tags"), newTag]

// immutablejs toJS() converts the array-like into an array.
let worken = [...this.state.data.get("tags").toJS(), newTag]
有关如何获取此错误的几个示例:

//示例1
阵列(NaN)
//例2
设a=[]
a、 长度=a.长度-1
//示例3将长度设置为>2^32
设b=[];
b、 长度=数学功率(2,32);
在我的例子中,它调用了以下
\uu spreadsarray

var _uspreadsarray=(未定义和未定义。_spreadsarray)|函数(){
对于(var s=0,i=0,il=arguments.length;i

var r=Array
s
NaN
时,当索引为
-1
时,问题出现在未处理的角落。
它不会替换元素,而是将数组的大小增加一倍。这最终会导致堆栈溢出并达到数组大小的限制。

是否确定此函数中存在错误?“无效长度”仅在执行
数组(-1)时才会出现
.length=-1
,两者都不是。这让我很困惑。Chrome在返回线上报告错误。该函数是减速机的一部分,因此输入受到非常严格的控制。当我查看缩小的代码时,唯一的数组(o)可以在angular的反射式喷油器和RxJS forkJoin以及最新的From中找到。
let borken = [...this.state.data.get("tags"), newTag]

// immutablejs toJS() converts the array-like into an array.
let worken = [...this.state.data.get("tags").toJS(), newTag]