如何构建嵌套数组?请求基于手机与SIM匹配合并数组的方案
没问题,我来帮你搞定这个数组整理的需求!下面是具体的实现方案,简单易懂还好用:
实现代码
let phones = ["phone1", "phone2", "phone3"]; let sims = [ 'phone1sim1', 'phone1sim2', 'phone2sim1', 'phone2sim2', 'phone1sim3', 'phone3sim1' ]; // 构建目标嵌套数组 let orgPhones = phones.map(phone => { // 筛选出当前手机对应的所有SIM卡 const matchedSims = sims.filter(sim => sim.startsWith(phone)); // 返回包含手机和对应SIM卡数组的子数组 return [phone, matchedSims]; }); console.log(orgPhones); // 输出结果:[ ["phone1", ["phone1sim1", "phone1sim2", "phone1sim3"]], ["phone2", ["phone2sim1", "phone2sim2"]], ["phone3", ["phone3sim1"]] ]
细节说明
- 核心思路是遍历手机数组+匹配对应SIM卡:用
map()遍历每个手机型号,它会帮我们生成对应的子数组结构; - 匹配SIM卡用
filter()结合startsWith():startsWith(phone)可以精准判断SIM卡名称是否以当前手机型号开头,完美匹配你的命名规则; - 关于你示例中phone1只保留两个SIM卡的情况:如果确实不需要
phone1sim3,可以在筛选后加个slice(0,2),改成const matchedSims = sims.filter(sim => sim.startsWith(phone)).slice(0,2);即可。
内容的提问来源于stack exchange,提问作者Danny Heinrich
相关产品推荐
相关产品推荐

