【问题标题】:Unable to insert a new item at a specific index into an array无法将特定索引处的新项目插入到数组中
【发布时间】:2021-07-08 18:26:22
【问题描述】:

我正在尝试将特定索引处的新项目插入到数组中。

我有这个代码:

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

const newQC: QC[] = [
  {
    id: cuid(),
    order: qt.length + 1,
  }
]

questionIndex !== undefined &&
  setQt(qt => {
    return insertAt(questionIndex, ...newQC)
  })

这样做的目的是从setQt 返回的数组中删除所有内容。

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

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

【问题讨论】:

    标签: javascript arrays reactjs typescript ecmascript-6


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这是因为 javascript 的“splice”函数修改了数组,但返回了一个删除了元素的数组。在你的情况下,一个空数组。

        您可以在以下链接中查看:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

        【讨论】:

          猜你喜欢
          • 2010-10-09
          • 2020-07-24
          • 1970-01-01
          • 2017-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多