数组常用操作

1 检查数组中是否已存在

const list = [
{id:'a',name:'王小天'},
{id:'b',name:'王大天'},]

const obj_b = {id:'a',name:'王小天'}

//检查list中是否已有 obj_b

let is_has_company_index = list.findIndex(i=>i.id== obj_b.id)
   if(is_has_company_index !='-1'){
//不存在
   list[is_has_company_index][key].push(item)
    }else{
//存在
....}

2 数组=》对象

let obj_id={}
arr.forEach(item=>{
    if(obj_id.hasOwnProperty(item.id)){
        //obj_id  中已有
    }else{
    //没有
        obj_id[item.id] = []
        obj_id[item.id].push(item)
     }

3 数组分组

/**
 * 实现将数组按照某个字段进行分组
 * @param {*} arr 数组
 * @param {函数或字符串} generateKey key值如何组成的函数,如果是字符串就直接是key值
 * @returns 分组后的对象
 */
export function groupBy(arr,generateKey){
  if(typeof generateKey === 'string'){
      const propName = generateKey
      generateKey = (item)=>item[propName]
  }
  const result = {}
  for(const item of arr ){
      const key = generateKey(item)
      if(!result[key]){
          result[key] = []
      }
      result[key].push(item)
  }
  return result
}

4 数组的splice和slice的区别

splicesplice(start, num, item1, item2, ...)
sliceslice(start, end)

5 substr和substring的区别

substrsubstr(start,length)
substringsubstring(start,end)

6 includes 比 indexOf好在哪?

includes可以检测NaN,indexOf不能检测NaN,includes内部使用了Number.isNaNNaN进行了匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值