如何通过reminderType正确获取reminderButtonLabels数组对象数据?
正确实现方式
首先,你用indexOf的方式完全错误——indexOf()是数组方法,必须用括号调用,而且它只能查找数组内严格相等的元素,但你的数组元素是对象,没法直接通过键名匹配。
要根据reminder.reminderType(比如'MOT'、'Tax'这类值)找到数组里对应包含该键的对象,推荐用以下两种方案:
方案一:用find()遍历数组匹配
假设你的reminderButtonLabels数组结构如下:
const reminderButtonLabels = [ { MOT: '车辆年检' }, { Tax: '车辆税费' }, { Service: '保养提醒' }, { Insurance: '保险到期' } ];
在ReminderRow组件中可以这样写:
// 找到包含目标键名的对象 const matchedItem = reminderButtonLabels.find(item => Object.keys(item).includes(reminder.reminderType) ); // 取出对应文本(加空值判断避免报错) const labelText = matchedItem ? matchedItem[reminder.reminderType] : '';
逻辑说明
find()会遍历数组,返回第一个符合条件的元素Object.keys(item).includes(reminder.reminderType)用于判断当前对象是否包含目标键名- 最后通过键名取出对应文本,同时处理了找不到匹配项的情况
方案二:调整结构为对象映射(更高效)
如果可以修改reminderButtonLabels的结构,推荐直接改成键值对对象,查找效率更高:
const reminderButtonLabels = { MOT: '车辆年检', Tax: '车辆税费', Service: '保养提醒', Insurance: '保险到期' }; // 直接通过键名取值 const labelText = reminderButtonLabels[reminder.reminderType] || '';
这种方式无需遍历数组,直接通过键名匹配,代码更简洁,性能也更好。
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

