Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法将特定索引处的新项插入数组_Javascript_Arrays_Reactjs_Typescript_Ecmascript 6 - Fatal编程技术网

Javascript 无法将特定索引处的新项插入数组

Javascript 无法将特定索引处的新项插入数组,javascript,arrays,reactjs,typescript,ecmascript-6,Javascript,Arrays,Reactjs,Typescript,Ecmascript 6,我试图在数组中的特定索引处插入一个新项 我有以下代码: 常量插入=索引:编号,…元素:QC[]=>{ 常数arrCopy=[…qt] 返回arrCopy.stipleindex,0,…元素 } 常数newQC:QC[]=[ { id:cuid, 顺序:qt.length+1, } ] 问题索引!==未定义&& setQtqt=>{ 返回InsertaQuestionindex,…newQC } 这样做的目的是从setQt返回的数组中删除所有内容 setQt是一个useState函数,因此它必须返

我试图在数组中的特定索引处插入一个新项

我有以下代码:

常量插入=索引:编号,…元素:QC[]=>{ 常数arrCopy=[…qt] 返回arrCopy.stipleindex,0,…元素 } 常数newQC:QC[]=[ { id:cuid, 顺序:qt.length+1, } ] 问题索引!==未定义&& setQtqt=>{ 返回InsertaQuestionindex,…newQC } 这样做的目的是从setQt返回的数组中删除所有内容

setQt是一个useState函数,因此它必须返回一个新状态


我的代码可能有什么问题?

Splice返回已删除的项目在您的情况下,您有0个已删除的项目作为第二个参数,因此它返回一个空数组。我想,你需要这样的东西

const insertAt = (index: number, ...element: QC[]) => {
    const arrCopy = [...qt];
    arrCopy.splice(index, 0, ...element);
    return arrCopy;
}

Splice返回已删除的项目在您的情况下,您有0个已删除的项目作为第二个参数,因此它返回一个空数组。我想,你需要这样的东西

const insertAt = (index: number, ...element: QC[]) => {
    const arrCopy = [...qt];
    arrCopy.splice(index, 0, ...element);
    return arrCopy;
}

您可以直接使用扩展语法插入:

return [...qt.slice(0, index), ...element, ...qt.slice(index)];

您可以直接使用扩展语法插入:

return [...qt.slice(0, index), ...element, ...qt.slice(index)];

这是因为javascript splice函数修改数组,但返回一个已删除元素的数组。在您的例子中,是一个空数组


您可以在以下链接中检查它:

这是因为javascript拼接函数修改了数组,但返回了一个删除了元素的数组。在您的例子中,是一个空数组

您可以在以下链接中进行检查: