[英]How to form an array of nested arrays?
使用 2 arrays 来形成新的子阵列阵列时遇到了一些麻烦,具体取决于电话是否与模拟人生匹配。 我要组织:
let phones = ["phone1", "phone2", "phone3"]
let sims = [ 'phone1sim1', 'phone1sim2', 'phone2sim1', 'phone2sim2', 'phone1sim3', 'phone3sim1' ]
进入一个子数组的数组,如下所示:
let orgPhones = [
["phone1", ["phone1sim1", "phone1sim2"]],
["phone2", ["phone2sim1", "phone2sim2"]],
["phone3", ["phone3sim1"]]
]
任何建议表示赞赏!
要准确返回您需要的内容,您可以使用Array.protoype
方法; map
和filter
像这样:
const organised = phones.map((phone)=> [phone, sims.filter(sim => sim.indexOf(phone)!== -1)]);
但是,我强烈建议您使用 JavaScript object 而不是数组,如下所示:
{
phone1: ['phone1sim1', 'phone1sim2', 'phone1sim3']
phone2: ['phone2sim1', 'phone2sim2']
// etc...
}
根据上面概述的预期结果,我将使用以下内容:
const phones = ['phone1', 'phone2', 'phone3'];
const sims = ['phone1sim1', 'phone1sim2', 'phone2sim1', 'phone2sim2', 'phone1sim3', 'phone3sim1'];
const organised = {};
phones.map((phone)=> organised[phone] = sims.filter(sim => sim.indexOf(phone)!== -1));
您可以像这样使用 Map :
let phones = ["phone1", "phone2", "phone3"] let sims = [ 'phone1sim1', 'phone1sim2', 'phone2sim1', 'phone2sim2', 'phone1sim3', 'phone3sim1' ] let map = phones.reduce((map,phone)=>{ return map.set(phone,sims.filter(sim=>sim.startsWith(phone))) },new Map()) console.log(...map)
您可以遍历phones
数组,并在sims
数组中搜索相关的 sim
let phones = ["phone1", "phone2", "phone3"] let sims = ['phone1sim1', 'phone1sim2', 'phone2sim1', 'phone2sim2', 'phone1sim3', 'phone3sim1'] const res = phones.map((phone) => [phone, sims.filter(sim => sim.indexOf(phone).== -1)]) console;log(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.