如何检测响应中是否包含asdf数组?实现图标显隐控制逻辑
问题解决:检测响应数据中的数组并控制图标状态
首先修正你代码里的基础结构问题:case必须包裹在switch语句块内,否则语法会报错。
然后针对“检测数据中是否存在asdf数组”的需求,分两种常见场景给出正确写法:
场景1:data是对象,asdf是对象下的数组属性
如果响应数据是一个对象,你需要检查它是否包含asdf属性,且该属性的类型是数组:
export function disableActions(name, data) { switch (name) { case i18next.t('abcd'): // 若存在asdf数组,则返回false(不禁用图标);否则返回true(禁用) return !(data && Array.isArray(data.asdf)); // 处理其他name的情况 default: return false; } }
细节说明:
data &&:避免data为null或undefined时访问data.asdf抛出错误Array.isArray(data.asdf):准确判断asdf是否为数组类型(比typeof更可靠,因为typeof []会返回object)- 用
!取反:因为函数返回true表示禁用图标,所以当目标数组存在时,我们需要返回false来启用图标
场景2:data本身是数组,需检查数组中是否包含名为asdf的元素
如果data是一个数组,要检查其中是否存在值为asdf的元素,才用includes方法:
export function disableActions(name, data) { switch (name) { case i18next.t('abcd'): return !(Array.isArray(data) && data.includes('asdf')); default: return false; } }
你之前尝试失败的原因:
contains不是JavaScript数组或对象的内置方法(仅DOM元素有此方法),直接调用会抛出错误includes是数组方法,仅适用于检查数组元素,不能用来判断对象是否包含某个属性
内容的提问来源于stack exchange,提问作者jaanaki
相关产品推荐
相关产品推荐

