这是一种奇怪的方式,可以这样做:
const item = 5
const selection = [3, 4, 5, 6]
const itemPos = selection.indexOf(item)
if (selection.includes(item)) {
const {[itemPos]: item, ...rest} = selection
console.log(Object.values(rest))
setSelection(Object.values(rest))
} else {
}
因为我在两个地方都使用了const
,所以第二个item
是另一个不同的变量,但是可以去掉const
并将表达式括在圆括号中来重新分配item
(就像你最初请求的那样):
let rest, item = 5
const selection = [3, 4, 5, 6]
const itemPos = selection.indexOf(item)
if (selection.includes(item)) {
({[itemPos]: item, ...rest} = selection)
console.log(Object.values(rest))
setSelection(Object.values(rest))
} else {
}
如果您想遵循类似的模式而不使用filter
,您可以使用splice
:
const item = 5
const selection = [3, 4, 5, 6]
const itemPos = selection.indexOf(item)
if (selection.includes(item)) {
const rest = [...selection]
rest.splice(itemPos, 1)
console.log(rest)
setSelection(rest)
} else {
}
与 filter
相比,这些方法都不是特别吸引人,但它们可以展示这些方法的工作原理。