js错误集锦 函数在一个map循环遍历中进行返回值返回 结果在调用该函数时收不到返回值

本文探讨了一个在JavaScript中使用Map遍历时遇到的错误情况:在循环内部的函数返回值无法正常获取。分析指出,尽管return应该中断循环,但实际上代码继续执行。提供了解决这个问题的正确代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误代码:

superviseFilter = () => {
	let company = this.props.cooperativeState.allCompany
	if(this.state.inspection.msName){
		let list = null
		company.map(item => {
			if(item.comName == this.state.inspection.msName){
				let a = item.comId
				if(this.state.inspection.superviseType == '137-01'){//港口
				   let wharfs = this.props.superviseState.allWharfs
				   wharfs = wharfs.filter(wharf => wharf.comId == a)
				   return wharfs.map(wharf => wharf.wharfName)
				}else if(this.state.inspection.superviseType == '137-02'){//航道
				   let waterways = this.props.superviseState.allWaterways
				   waterways= waterways.filter(waterway => waterway.orgId.includes(a))
				   return waterways.map(waterway => waterway.waterwayName)
				}
			}
		})
		alert('执行')
	}else{
	
	}
}

分析:在该函数的map循环遍历中进行返回,理应来说return之后他不会往下执行了,结果打印时你会发现,他继续执行了,所以说这样写是错误的

正确代码如下:

superviseFilter = () => {
	let company = this.props.cooperativeState.allCompany
	if(this.state.inspection.msName){
		let list = null
		company.map(item => {
			if(item.comName == this.state.inspection.msName){
				let a = item.comId
				if(this.state.inspection.superviseType == '137-01'){//港口
				   let wharfs = this.props.superviseState.allWharfs
				   wharfs = wharfs.filter(wharf => wharf.comId == a)
				   list = wharfs.map(wharf => wharf.wharfName)
				}else if(this.state.inspection.superviseType == '137-02'){//航道
				   let waterways = this.props.superviseState.allWaterways
				   waterways= waterways.filter(waterway => waterway.orgId.includes(a))
				   list = waterways.map(waterway => waterway.waterwayName)
				}
			}
		})
		return list
	}else{
	
	}
}

ok,我也是第一次遇到,纠结了好一会,终于解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值