React中如何筛选包含'def'的category数组的对象?
修正数组包含元素的筛选逻辑
嘿,问题出在你直接用全等运算符比较数组和字符串啦!因为category是数组类型,a.category === 'def'本质是把数组和字符串做全等比较,这永远会返回false,自然筛选不到任何符合条件的对象。
正确的做法:使用数组的includes()方法
JavaScript数组内置了includes()方法,专门用来判断数组是否包含某个指定元素,它会返回布尔值,完美适配filter的回调需求。
修正后的代码如下:
// 建议把filter的参数名从a改成item,避免和外部数组a混淆,可读性更好 a.filter((item) => item.category.includes('def')) .map((item) => (<div>{item.number}</div>))
额外补充:
includes()是ES6引入的方法,现代浏览器和Node.js都支持;如果需要兼容极旧环境,可以用indexOf('def') !== -1替代,效果完全一致:a.filter((item) => item.category.indexOf('def') !== -1) .map((item) => (<div>{item.number}</div>))- 把参数名从
a改成item是个小细节,但能避免变量命名冲突,让代码更易读易懂。
内容的提问来源于stack exchange,提问作者Coolguy
相关产品推荐
相关产品推荐

