复杂数组遍历组合

取两个数组中相同的数据项
const a=[{dpid:2},{dpid:3},{dpid:4},{dpid:5}]
const b=[{dpid:21},{dpid:3},{dpid:41},{dpid:5}]
const c=a.filter(item1=>b.some(item2=>item1.dpid==item2.dpid))
console.log(c)

es6的遍历中写了{}里面的要return,没写{}不加return

1、二维数组组合

//两个字符串数组组成一个对象数组
const a=['张三','李四','王五']
const b=['a','b','c']
const arr=a.map((item,index)=>{
return{
name:item,
value:b[index]
}
})
//提取对象数组里面的各个元素,组成一个二维数组
const a=[
{a:'22',b:'33',c:'44',d:'55'},
{a:'30',b:'31',c:'32',d:'33'},
{a:'40',b:'41',c:'42',d:'43'},
]
const arr=[]
a.map(item=>{
const arr2=[]
arr2.push(item.a)
arr2.push(item.b)
arr2.push(item.c)
arr2.push(item.d)
arr.push(arr2)
})
//结果:[[22,33,44,55],[30,31,32,33],[40,41,42,43]]

二维数组的遍历

var shengfen=new Array(
            ['北京市','天津市','上海市','重庆市'],
            ['河北省','山西省','辽宁省','吉林省','黑龙江省','江苏省','浙江省','安徽省','福建省','江西省','山东省','河南省','湖北省','湖南省','广东省','海南省','四川省','贵州省','云南省','陕西省','甘肃省','青海省','中国台湾省'],
            ['内蒙古自治区','广西壮族自治区','西藏自治区','宁夏回族自治区','新疆维吾尔自治区'],
            ['中国香港特别行政区','中国澳门特别行政区']
            );
        //二维数组遍历
        for(var i=0;i<shengfen.length;i++){
            for(var j=0;j<shengfen[i].length;j++){
                document.write(shengfen[i][j]+'很棒棒丶');
            }
            document.write('<br>');
        }

3、数组对象按照相同属性名来分组

const lists=
  [{title: 'B', name: '北京'},
   {title: 'B', name: '保定'},
   {title: 'B', name: '北海'},
   {title: 'C', name: '长春'},
   {title: 'C', name: '常德'},
   {title: 'A', name: '安庆'},
   {title: 'D', name: '大庆'},
   {title: 'D', name: '东莞'},
   {title: 'F', name: '福州'},
   {title: 'F', name: '抚州'}]
   const obj={}
lists.map(item=>{
    obj[item.title]=obj[item.title]||[]
    obj[item.title].push(item)
})
console.log(obj)

也可使用reduce方法

let arr=[
  {name:'小明',old:'18'},
  {name:'小红',old:'18'},
  {name:'小王',old:'19'},
];
let result = arr.reduce((a, b) => {
  if (a[b.old]) {
    //根据old分类
    a[b.old].push(b);
  } else {
    a[b.old] = [b];
  }
    return a;
}, {});
console.log(result);
输出结果:
{
   18:[
        {name: "小明", old: "18"},
        {name: "小红", old: "18"},
      ],
   19:[
        {name: "小王", old: "19"}
      ]
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值