【发布时间】:2021-06-17 14:23:30
【问题描述】:
在 html 上我有三个按钮每个按钮负责一个数组的特定索引。 当第一次按下它应该在提供的索引中插入元素,如果再次按下它应该删除元素。 Button 应该切换并且 Array 应该保留前一个元素而不删除元素:
例如: 开
第一次按下所有三个按钮
那么数组应该看起来像这样arr= [1,2,3]
开启
再次按下按钮 2
数组应该是arr=[1,,3]
HTML:
<button onClick="test(1,0)">button 1</button>
<button onClick='test(2,1)'>button 2 </button>
<button onClick='test(3,2)'>button 3 </button>
JS:
const arr=[]
let state
const test = (name,index)=>{
state= !state
if(state){
arr[index]=name
}else{
arr.splice(index,1)
}
console.log(arr)
}
【问题讨论】:
-
splice 从数组中删除元素,因此不会保留您的位置。相反,我认为您想用
null替换array[index]。这能解决你的问题吗?请包括确切的错误/您的代码实际遇到的问题。 -
您对
splice的使用会删除索引并缩短数组,您也不能将索引显式设置为空,因此如果您希望这样做,则需要创建一个新数组镜像前一个但不分配相关索引。不过,这似乎是一个脆弱的模式。 -
您对
onClick函数的调用也是错误的。在进行函数调用时,您需要使用{},因为目前您只是在解释一个字符串。例如你需要做onClick={() => test(1,0)} -
@Ranjan Raj Shrestha 如果首先单击第三个按钮,您希望会发生什么?你会期待
[null, null, 3]还是[3]
标签: javascript arrays reactjs if-statement state