如何在React Native中格式化响应数据以填充select下拉选择器
问题场景
我需要将接口响应中的Terminals字段条目,格式化为包含{ key, label }结构的数组,用来填充下拉选择组件的选项,当前获取到的响应数据结构如下:
{ "Status": "SUCCESS", "Terminals": { "0": { "name": "GENESIS-演示终端", "term_id": "GENESIS", }, "1": { "name": "GENESIS-演示终端", "term_id": "GENESIS", }, "name": "", "term_id": "", }, "TotalCount": 1 }
处理方案
注意返回的Terminals是对象类型而非数组,且附带了两个无效的空值属性name、term_id,我们仅需过滤出数字键对应的有效条目做转换即可,以下是JavaScript实现代码:
const response = // 此处填入接口返回的完整响应数据 const selectOptions = Object.entries(response.Terminals) // 过滤非数字键的无效属性,可根据业务需求调整过滤规则 .filter(([key, value]) => !isNaN(Number(key)) && value.term_id && value.name) // 转换为下拉组件要求的结构,key取终端ID、label取终端名称,可按需调整映射规则 .map(([_, terminalItem]) => ({ key: terminalItem.term_id, label: terminalItem.name }))
补充说明
- 如果需要添加默认空选项,可在生成的
selectOptions数组头部插入{ key: '', label: '请选择终端' } - 如果业务允许空值选项,删除过滤逻辑里的
value.term_id && value.name条件即可
内容的提问来源于stack exchange,提问作者Gabo Ruiz
相关产品推荐
相关产品推荐

