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的区别
splice | splice(start, num, item1, item2, ...) |
slice | slice(start, end) |
5 substr和substring的区别
substr | substr(start,length) |
substring | substring(start,end) |
6 includes 比 indexOf好在哪?
includes可以检测NaN
,indexOf不能检测NaN
,includes内部使用了Number.isNaN
对NaN
进行了匹配