项目中遇到的JS 基础知识小结

这篇博客总结了JavaScript中的一些基础知识和实用技巧,包括数据类型的判断、类数组对象的遍历、数组去重方法、阻止事件默认行为和冒泡、数字格式化、对象和数组的操作,以及深拷贝和浅拷贝的区别。还涵盖了HTTP请求错误提示和如何判断一个值是否为数组。
摘要由CSDN通过智能技术生成

JS数据类型的判断方法
var type = function(data) {
   
      var toString = Object.prototype.toString;
      var dataType = data instanceof Element
          				? 'element' // 为了统一DOM节点类型输出
          				: toString.call(data).replace(/\[object\s(.+)\]/, ''$1').toLowerCase();
      return dataType;
}
类数组对象的遍历
var listMap = function (array, type, fn) {
   
    return !fn ? array : Array.prototype[type]['call'](array, fn)
}

// 使用
var divs = document.querySelectorAll('div')
listMap(divs, 'forEach', function (e) {
   
    console.log(e.innerHTML)
})
数组对象的去重
const data = [
           {
   
               name: 'Kris',
               age: '24'
           },
           {
   
               name: 'Andy',
               age: '25'
           },
           {
   
               name: 'Kitty',
               age: '25'
           },
           {
   
               name: 'Andy',
               age: '25'
           },
           {
   
               name: 'Kitty',
               age: '25'
           },
           {
   
               name: 'Andy',
               age: '25'
           },
           {
   
               name: 'Kitty',
               age: '25'
           }
]

const dataReducer = (prev, cur, idx) => {
   
    
     let obj = {
   };
     const {
    name } = cur;
     obj[name] = cur;
     return {
   
         ...prev,
         ...obj
     }
 }
 const reducedData = data.reduce(dataReducer, {
   })
 let newData = Object.values(reducedData)    

 console.log(newData)    
/***输出结果***/
0: {
   name: "Kris", age: "24"}
1: {
   name: "Andy", age: "25"}
2: {
   name: "Kitty", age: "25"}


/**
* 涉及到的知识点:
* 
* Object.keys获取对象属性, Object.values 获取对象的值
* reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
* 接收的函数可以有四个参数
* @param Object {prev} 前一个对象值,
* @param Object {cur}  当前对象值,
* @param Object {idx}  当前索引值,
* @param Array {arr}   数组对象,
* reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。
*/
阻止事件默认行为和冒泡的兼容性写法
// 阻止冒泡
function stopPropagation(e){
   
    if(e && e.stopPropagation){
   
         e.stopPropagation()
   }else{
   
       window.event.cancelBubble = true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值