摸鱼de第一天

117 阅读2分钟

最近所用的数组方法

find
  • 返回值:返回通过判断条件的数组的第一个元素的值,没有返回undefined
  • 方法介绍:不会改变原数组的值
let desc=''
//判断id存在在寻找
if(xxxx.id) {
    desc = Object.values(xxxxs).find(item => item.type === xxxx.ssss).desc
}
indexOf
  • 返回值:检查的字符串中没有出现则返回-1
some
  • 返回值:true || false ,如果返回值为true就会终止循环
  • 方法介绍:如果有一个满足则返回true,不改变原数组,不会对空数组进行检测(一般不改变原数组通过修改下标或引用类型方式的修改则有可能发生变化)
every
  • 返回值:true || false ,如果返回值为false就会终止循环
  • 方法介绍:遍历数组中的所有元素是否符合条件,符合返回true,不符合返回false,一般不改变原数组通过修改下标或引用类型方式的修改则有可能发生变化
if(Object.values(categoty).every(item => item.indexOf(keyWord) === -1)){
    不符合条件
}else{
    符合条件
}
filter
  • 返回值:返回一个新数组
  • 方法介绍:用于对数组进行过滤,不会对空数组遍历,不会改变原数组
Array.filter(item => {
if(selected.length){
    return selected.indexOf(item.value)
}else{
    return item
}
})
reduce
  • 一般用于累加计数 用于复选框中的计数功能的功能
Object.values(categroty).reduce((pre,item,index) =>pre + (item.is? 1:0),0)

switch循环

const { value } = this
let com = 'template';
switch(value判断的类型){
    case value:
    com = 'xxx';
    break;
    case 'array':
    com = 'Array'
    break;
    case 'text':
    case 'number':
    case 'date':
    default:
    break;
}

vue2中对对象添加响应式数据使用$set(第一参数需要更新的对象或数组,第二个参数对象的属性名或数组的下标,第三个是更新的内容)

promise.allSettled 参数接受一个promise的数组,返回一个新的promise,可以拿到每一个promise的状态不管成功还是失败

封装一个接口请求函数

 reqData = {
 one:[],
 two:[],
 three:[]
}
async requestFunction(){
this.requestLoading= true;
const {reqData} = this
    let one = this.http.post(`xxx`);
    let two = this.http.post(`yyy`);
    let three = this.http.post(`zzz`);
    let res = await Promise.allSettled([one.two,three]);
    Object.keys(reqData).forEach(key,index)=>{
    req[key]=res[index].status==='fulfilled'&&res[index].value.code===200?res[index].value:[];
    }
    this.requestLoading = false;
}
*promise.all可以将多个promise实例包装成一个新的promise实例,成功和失败是不同的,成功返回结果数组,而失败返回最先被reject失败的值
const dataNumList = async () =>{
    return await utils.http.post('xxxx')
}
const dataNumList1 = async () =>{
 return awaut utils.http.post('xxxx')
}
const getDataList = () => {
 Promise.all([dataNumList(),dataNumList1()]).then((resultList:any)=>{
  const dataObj={
   nameList:[],
   logicData:[]
   } as any
   for(let i=0; i<resultList.length;i++){
   const result = resultList[i]
   if(!result.code && 1===0){
    dataObj.nameList = result.data
   } else if(i === 1){
    dataObj.logivData = result.data
   }
    }
 })
}