从多维数组中删除匹配的字符串项

Removing a matching string item from a multidimensional array

我有一个从复选框值派生的多维数组,对于外部数组的所有实例,它们可以具有相同的字符串。

示例数组:

[
    ['One', 'Two', 'Three'],
    ['One', 'Two', 'Three'],
    ['One', 'Two', 'Three'],
]

当我调用该函数时,我传递了一个索引号,它表示我要寻址的内部数组之一。例如,如果用户 未选中 表示 1 索引中 'Two' 的复选框,我希望多维数组更改为此。

 [
        ['One', 'Two', 'Three'],
        ['One', 'Three'],
        ['One', 'Two', 'Three'],
 ]

我在编写这个函数时遇到了问题。这是在 React 中,解决这个问题的代码片段目前是这样的:

setCheckedValues(prevArray => {
          const newItemArray = prevArray.slice()
          const newItemArrayFiltered = [...newItemArray, newItemArray[index].filter(name => name !== event.target.name)]
          return newItemArrayFiltered
        })

我搜索了很多,但对于如何只删除一个内部数组中的字符串感到困惑。感谢您的帮助!

一个相当标准的处理方法是 slice() 围绕索引。

setCheckedValues(prevArray => {
  return [
    ...prevArray.slice(0, index),
    prevArray[index].filter(name => name !== event.target.name),
    ...prevArray.slice(index + 1)
  ];
});

另一种方法是 map() 在数组上检查匹配索引并适当地返回更新后的值。

setCheckedValues(prevArray => prevArray
  .map((arr, i) =>
    i === index
      ? arr.filter(name => name !== event.target.name)
      : arr
  )
);