取两个数组中相同的数据项 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"}
]
}