如何在嵌套数组中查找值并将布尔类型的active值转为Yes/No字符串
如何将嵌套数组中布尔类型的"active"字段转换为字符串"Yes"/"No"
你可以通过遍历嵌套数组,对每个active字段进行条件判断转换,以下是两种常见实现方式:
直接修改原数组(使用forEach)
这种方式会直接改变原始数据:
const data = [ { "id":81, "time":"2022-01-01 19:30:00", "subList":[ { "active":false, "success":null } ] }, { "id":89, "time":"2022-01-01 21:00:15", "subList":[ { "active":true, "success":1 } ] } ]; // 遍历外层数组的每个对象 data.forEach(item => { // 遍历当前对象的subList数组 item.subList.forEach(subItem => { // 将布尔值转换为对应字符串 subItem.active = subItem.active ? "Yes" : "No"; }); }); console.log(data);
创建新数组保留原数据(使用map)
如果不想修改原始数据,可以用map生成新数组:
const transformedData = data.map(item => ({ ...item, // 复制原对象的所有字段 subList: item.subList.map(subItem => ({ ...subItem, // 复制子对象的所有字段 active: subItem.active ? "Yes" : "No" // 转换active字段 })) })); console.log(transformedData);
健壮性优化(处理空数组或缺失字段)
如果subList可能为空或不存在,或者active字段类型不确定,可以添加判断逻辑:
data.forEach(item => { // 先确认subList是有效数组 if (Array.isArray(item.subList)) { item.subList.forEach(subItem => { // 仅当active是布尔类型时才转换 if (typeof subItem.active === 'boolean') { subItem.active = subItem.active ? "Yes" : "No"; } }); } });
内容的提问来源于stack exchange,提问作者cng
相关产品推荐
相关产品推荐

