基于指定数组过滤数据集时结果恒为0,求排查问题原因
问题分析与修正
核心错误有两个:
forEach的返回值问题:forEach方法执行后始终返回undefined,而你的filter回调函数把这个返回值作为判断依据,undefined在布尔语境下会被判定为false,导致所有元素都被过滤掉,结果自然是空数组。- filters元素访问错误:你的filters是字符串数组
['serviceCode1', 'serviceCode2', 'serviceCode3'],但代码里却试图访问x.code——字符串根本没有code属性,x.code!会得到undefined,data.serviceCode.includes(undefined)必然不成立。
修正后的代码
如果需要判断data.serviceCode包含filters中的任意一个字符串:
this.mainDataSet = this.mainDataSet.filter((data) => { return this.filters.some(x => data.serviceCode.includes(x)); });
如果是需要data.serviceCode精确等于filters中的某一项:
this.mainDataSet = this.mainDataSet.filter((data) => { return this.filters.includes(data.serviceCode); });
内容的提问来源于stack exchange,提问作者Code Ratchet
相关产品推荐
相关产品推荐

