部分代碼是react.js的寫法,但是js部分大部分都是通用的
HTML部分
<Button type="primary" onClick={this.moveData.bind(this,'up')} >上移</Button>
<Button type="primary" onClick={this.moveData.bind(this,'down')}>下移</Button>
js 部分
單行數據上移下移功能,多行的話這個方法也許不管用了。
moveData=(status)=>{
let { WaListData, detailsId } = this.state; // WaListData是數組,detailsId是單行數據id(唯一的)
for(let i=0 , a = WaListData.length; i < a;i++){
let arr = WaListData[i];
let det = [];
det.push(detailsId);
if(det.some(v => v === arr.stkLocID)){ //stkLocID是數組里面的識別id
if(status === 'up'){
if(i === 0){
message.error('到頂了');
}else {
WaListData[i] = WaListData.splice(i-1, 1, WaListData[i])[0] //這里做了三個事情下面①分析:
}
this.setState({WaListData})
}else if (status === 'down'){
if(i === WaListData.length - 1){
message.error('到底了');
}else {
WaListData[i] = WaListData.splice(i+1, 1, WaListData[i])[0]
}
this.setState({WaListData});
i += 1;
}
}
}
}
①對上面splice分析解釋:
第一件:WaListData.splice(i-1, 1)刪除下個索引的數據
第二件:WaListData.splice(i-1, 1, WaListData[i])用當前索引數據(WaListData[i])替換下個索引的數據
第三件:WaListData[i]= WaListData.splice(i-1, 1, WaListData[i])[0]當WaListData.splice()方法執行后會返回刪除的數據,並將刪除的數據賦值給當前索引
