JavaScript中如何在函数中传值并匹配数组对象的id状态?
解决方法
你当前代码的问题在于this.collection是数组,无法直接通过.id访问元素属性,必须先从数组中找到与传入id匹配的对象,再判断其status值。以下是两种可行的实现方式:
方式一:使用find方法(ES6+)
这是最简洁的实现,利用数组的find方法快速定位目标对象:
doSomething(id) { const targetItem = this.collection.find(item => item.id === id); // 先判断对象存在,避免访问undefined的属性报错 if (targetItem && targetItem.status === 23) { // 执行操作 } else { // 执行操作 } }
方式二:使用普通for循环(兼容旧环境)
如果需要兼容不支持ES6的运行环境,可使用传统遍历方式:
doSomething(id) { let targetItem = null; for (let i = 0; i < this.collection.length; i++) { if (this.collection[i].id === id) { targetItem = this.collection[i]; break; } } if (targetItem && targetItem.status === 23) { // 执行操作 } else { // 执行操作 } }
注意事项
- 建议使用
===严格相等运算符进行判断,避免类型转换导致的逻辑错误 - 必须先确认找到目标对象,再访问其
status属性,防止因找不到对象而抛出Cannot read property 'status' of undefined错误
内容的提问来源于stack exchange,提问作者swigswag
相关产品推荐
相关产品推荐

