前端,后端for,foreach,for和foreach嵌套

后端:

for

(1) return:直接返回当前for。

(2) return嵌套:直接返回,跳出两层嵌套。

(3) break:直接跳出当前for。

(4) break嵌套:只会跳出当前break的循环。

(5) contiune:终止当前,执行下一条。

(6) contiune 嵌套:终止当前执行,执行下一条。

foreach

(1) return:相当于for里的continue。

(2) return嵌套:相当于for里的continue嵌套。

 

前端:

for:

(1) return:直接返回

(2) return嵌套:直接返回

(3) break:直接跳出

(4) break嵌套:只会跳出当前break的循环

(5) contiune:终止当前,执行下一条

(6) contiune 嵌套:终止当前执行,执行下一条

foreach:

(1) return:相当于for里的continue

(2) return嵌套:相当于for里的continue嵌套

通过对比发现前后端的for和foreach使用完全一致

 

### 如何解析操作后端返回的嵌套数组 在实际开发中,后端通常会返回复杂的 JSON 数据结构,其中可能包含嵌套数组。为了有效地解析操作这些数据,可以采用多种编程语言中的工具技术来完成。 #### 解析嵌套数组的方法 当接收到后端返回的数据时,可以通过序列化工具将其转换为本地对象或数组形式。例如,在 JavaScript 中,`JSON.parse()` 方法可用于将字符串化的 JSON 转换为可操作的对象;而在 Python 中,则可以使用 `json.loads()` 函数[^1]。 对于嵌套数组的操作,主要涉及以下几个方面: 1. **访问特定层次的数据** 嵌套数组意味着某些字段可能是另一个数组的一部分。通过索引或者键名逐层深入即可获取目标数据。 2. **遍历整个数据结构** 使用递归函数能够轻松地遍历任意深度的嵌套数组并执行所需逻辑。 3. **过滤、映射或其他变换** 利用高阶函数如 `.map()`, `.filter()`, `.reduce()` 可以高效地对每一层数据应用自定义规则。 以下是基于不同场景下的具体实现案例: --- ### 示例代码 (JavaScript) 假设我们有一个来自服务器响应如下所示的嵌套数组: ```javascript const data = { users: [ { id: 1, name: 'Alice', roles: ['admin'] }, { id: 2, name: 'Bob', roles: ['editor', 'viewer'] } ] }; ``` 如果想提取所有用户的 role 并展平成单一列表,可以用下面这段脚本做到这一点: ```javascript // 提取所有的角色名称形成一维数组 const allRoles = data.users.flatMap(user => user.roles); console.log(allRoles); // 输出 ["admin", "editor", "viewer"] ``` 这里利用了 flatMap 来简化双重迭代过程[^2]. 另外一种更通用的方式就是编写一个专门用于处理深层嵌套结构的辅助函数——比如递归法: ```javascript function extractValues(obj, keyToFind){ let results = []; function recurse(currentObj){ if(Array.isArray(currentObj)){ currentObj.forEach(item=>recurse(item)); }else{ Object.keys(currentObj).forEach(key=>{ const value=currentObj[key]; if(typeof(value)==='object'){ recurse(value); } if(key===keyToFind && Array.isArray(value)){ results.push(...value); } }); } }; recurse(obj); return results; } let extracted=extractValues(data,'roles'); console.log(extracted); // 同样得到["admin","editor","viewer"] ``` 此方法允许指定要检索的具体属性名字,并且无论它藏在哪一层都能找到它们。 --- ### 示例代码 (Python) 同样考虑上述同样的输入格式但这次改用 python 处理方式来做相同的任务: ```python import json data_str = ''' {"users": [{"id": 1,"name":"Alice","roles":["admin"]},{"id":2,"name":"Bob","roles":["editor","viewer"]}]} ''' def get_all_roles(nested_dict): result = [] for k,v in nested_dict.items(): if isinstance(v,list): for item in v: if isinstance(item,dict): result +=get_all_roles(item) elif k=='roles' and isinstance(v,list): result.extend(v) return result # 将 JSON 字符串转回字典类型变量 data=json.loads(data_str) all_roles=get_all_roles(data) print(all_roles) # 打印结果应为['admin','editor','viewer'] ``` 在这里也实现了类似的扁平化功能,不过采用了稍微不同的语法风格而已[^4]. --- ### Vue.js 场景下表格渲染与单元格合并 针对前端框架 Vue.js 或 Nuxt.js 开发者来说,面对含有子项 (`children`) 的多维度数组作为源数据的情况尤为常见。Arco Design Table 组件提供了灵活配置选项支持此类需求[^3]: 假设有这样一个树形结构的数据模型: ```javascript [ {"id":101,"title":"Parent A","amount":null, "children":[ {"id":102,"title":"Child AA","amount":5}, {"id":103,"title":"Child AB","amount":7} ]}, ... ] ``` 那么可以在模板部分这样写: ```vue <template> <a-table :columns="columns" :dataSource="flattenedData"> <!-- 自定义插槽 --> </a-table> </template> <script setup> import { ref, computed } from 'vue'; const rawDataSource=[ {"id":101,"title":"Parent A","amount":null, "children":[ {"id":102,"title":"Child AA","amount":5}, {"id":103,"title":"Child AB","amount":7} ]} ]; const flattenedData=computed(()=>{ const output=[]; rawDataSource.forEach(parentRow=>{ parentRow.children.forEach(childRow=>{ output.push({...parentRow,...childRow}); }) }); return output; }); const columns=[{...}]; // 定义列描述... </script> ``` 注意此处省略了一些细节以便突出重点概念即如何展开父子关系记录使之适合平面显示模式的同时保留必要的上下文关联信息便于后续进一步加工呈现效果. ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值