写给自己的代码片段

134 阅读1分钟

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) //{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

集合
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) // {1001: 2, 1002: 1, 2001: 1, 2003: 2}

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;
   })  
}