【发布时间】:2020-08-04 23:25:00
【问题描述】:
我知道标题不够清楚,但我会在这里尝试解释更多。 我有一个平面列表,我必须选择多个项目并创建一个字符串值,其中包含我必须发送到服务器的项目 ID 和项目价格。 这是我的方法:(效果很好)
selectItem = data => {
let test = 130;
if (data.Unites < test) {
data.Etat = 0
console.warn('points insufisants');
} else {
data.isSelect = !data.isSelect;
data.selectedClass = data.isSelect ? StylesGift.validChek : StylesGift.inValidChek;
const newItem = {
idCadeau: data.idCadeau,
Unites: data.Unites,
};
if (data.isSelect) {
const index = this.state.paramsSend.indexOf([newItem]);
this.setState({
paramsSend: this.state.paramsSend.concat([newItem]),
}, () => {
let str = this.state.paramsSend.map(v => Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
});
}else if (data.isSelect === false) {
const index = this.state.paramsSend.indexOf([newItem]);
if (index > -1) {
array.splice(index, 1);
let str = this.state.paramsSend.map(v => Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
}
console.log('looog' + this.state.paramsSend);
}
}
this.setState({changed: !this.state.changer})
};
我的问题是当我取消选择一个项目时,我无法使用此代码删除该项目的 ID 和价格:
else if (data.isSelect === false) {
const index = this.state.paramsSend.indexOf([newItem]); <-- =-1
if (index > -1) {
this.state.paramsSend.splice(index, 1);
let str=this.state.paramsSend.map(v=>Object.values(v).join('_')).join(',')
this.setState({
params: str,
});
}
console.log('looog' + this.state.paramsSend);
}
有什么建议吗? indexOf 返回 -1 不知道为什么
const index = this.state.paramsSend.indexOf([newItem]);
console.warn('index ' + index);
console.warn('from this ' +JSON.stringify(this.state.paramsSend));
console.warn('remove this ' + JSON.stringify(newItem));
【问题讨论】:
-
array.splice()可以从数组中删除项目,那么您哪里出错了?是index === -1? -
它不会删除任何东西
-
哦,是的,当我记录索引时它给了我-1
标签: javascript arrays react-native object