从多维数组中删除匹配的字符串项
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
)
);
我有一个从复选框值派生的多维数组,对于外部数组的所有实例,它们可以具有相同的字符串。
示例数组:
[
['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
)
);