检查数组 javascript 中的子字符串
Check substring in array javascript
当我在数组中包含单词 SAC 和 Assessoria 时,它只是 returns 第一个 if,这个逻辑有什么问题?
如果数组(技能)有子字符串 SAC 我想用 response.data.SAC 创建一个 setState 这也是一个数组
如果数组(技能)有子字符串 Assessoria 我想用 response.data.AC 创建一个 setState 这也是一个数组
如果你有两个子字符串 SAC 和 Assessoria,我想用 response.data.SAC 和 response.data.AC 创建一个 setState,它们都是数组
代码如下:
getDataTab() {
const URL = `${Utils.ngrok_service}`;
const skills = this.props.manager.workerClient.attributes.routing.skills;
axios.post(URL).then((response) => {
skills.map((item, index) => {
if (item.includes('SAC')) {
console.log('SAC EXISTE');
this.setState({ options: response.data.SAC });
} else if (item.includes('Assessoria')) {
console.log('AC EXISTE');
this.setState({ options: response.data.AC });
} else if (item.includes('SAC') && item.includes('Assessoria')) {
console.log('ambos EXISTE');
this.setState({
options: [...response.data.SAC, ...response.data.AC],
});
} else {
console.log('nada EXISTE');
}
});
});
}
您在每次迭代中设置一次状态,而不是先遍历整个数组来检查条件。您的条件检查顺序也不正确。
let hasSAC = false, hasAssessoria = false;
skills.forEach(item=>{
hasSAC = hasSAC || item.includes("SAC");
hasAssessoria = hasAssessoria || item.includes("Assessoria");
});
if(hasSAC && hasAssessoria){
console.log('ambos EXISTE');
this.setState({
options: [...response.data.SAC, ...response.data.AC],
});
} else if(hasSAC){
console.log('SAC EXISTE');
this.setState({ options: response.data.SAC });
} else if(hasAssessoria){
console.log('AC EXISTE');
this.setState({ options: response.data.AC });
} else {
console.log('nada EXISTE');
}
当我在数组中包含单词 SAC 和 Assessoria 时,它只是 returns 第一个 if,这个逻辑有什么问题?
如果数组(技能)有子字符串 SAC 我想用 response.data.SAC 创建一个 setState 这也是一个数组
如果数组(技能)有子字符串 Assessoria 我想用 response.data.AC 创建一个 setState 这也是一个数组
如果你有两个子字符串 SAC 和 Assessoria,我想用 response.data.SAC 和 response.data.AC 创建一个 setState,它们都是数组
代码如下:
getDataTab() {
const URL = `${Utils.ngrok_service}`;
const skills = this.props.manager.workerClient.attributes.routing.skills;
axios.post(URL).then((response) => {
skills.map((item, index) => {
if (item.includes('SAC')) {
console.log('SAC EXISTE');
this.setState({ options: response.data.SAC });
} else if (item.includes('Assessoria')) {
console.log('AC EXISTE');
this.setState({ options: response.data.AC });
} else if (item.includes('SAC') && item.includes('Assessoria')) {
console.log('ambos EXISTE');
this.setState({
options: [...response.data.SAC, ...response.data.AC],
});
} else {
console.log('nada EXISTE');
}
});
});
}
您在每次迭代中设置一次状态,而不是先遍历整个数组来检查条件。您的条件检查顺序也不正确。
let hasSAC = false, hasAssessoria = false;
skills.forEach(item=>{
hasSAC = hasSAC || item.includes("SAC");
hasAssessoria = hasAssessoria || item.includes("Assessoria");
});
if(hasSAC && hasAssessoria){
console.log('ambos EXISTE');
this.setState({
options: [...response.data.SAC, ...response.data.AC],
});
} else if(hasSAC){
console.log('SAC EXISTE');
this.setState({ options: response.data.SAC });
} else if(hasAssessoria){
console.log('AC EXISTE');
this.setState({ options: response.data.AC });
} else {
console.log('nada EXISTE');
}