1- 取两个数组的相同值,组成新数组
es6
let a = [
{ id: 1, name: 2, age: 3 },
{ id: 2, name: 3, age: 24 }
]
let b = [
{ id: 1, name: 2, age: 3 },
{ id: 2, name: 3, age: 24 }
]
let add = a.filter(item => !b.some(ele => ele.id === item.id))
es5(差点被坑死)
a = [
{ id: 2, name: 3, age: 24 },
{ id: 1, name: 2, age: 3 }
]
当a改成这种结构,新数组组成有问题. splice问题
for (var i=0; i<arr2.length; i++) {
for (var j=0; j<arr1.length; j++) {
if (arr2[i].id == arr1[j].id) {
arr2.splice(i, 1);
}
}
}
2- 计算数组中每个元素出现的次数
数组
let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']
let nameNum = names.reduce((pre, cur) => {
if (cur in pre) {
pre[cur]++
} else {
pre[cur] = 1
}
return pre
}, {})
console.log(nameNum)
集合
let arr = [
{
a: 1001,
b: 2001
},
{
a: 1002,
b: 2003
},
{
a: 1001,
b: 2003
}
]
let count = arr.reduce((pre, cur) => {
for (const key in cur) {
if (Object.hasOwnProperty.call(cur, key)) {
const element = cur[key]
if (element in pre) {
pre[element]++
} else {
pre[element] = 1
}
}
}
return pre
}, {})
console.log(count)
js两个数组比较,删除相同的
var ary = [1,2,3,4];
var obj=[
{
id:1,
name:'luo1'
},
{
id:2,
name:'luo2'
},
{
id:5,
name:'luo5'
}
]
方案一 (不兼容IE)
const newArr = obj.filter(item => !ary.includes(item.id))
方案二
unique (obj, ary){
return obj.filter(function(item){
return ary.indexOf(item.id) === -1;
})
}