javaScript常用小技巧

求和,最大值以及最小值

代码
const array = [5,4,7,8,9,2]
console.log("求和",array.reduce((a,b) => a+b)
console.log(("最大值",array.reduce((a,b) => a>b?a:b)
console.log(("最小值",array.reduce((a,b)=> a<b?a:b)
运行效果
求和,35
最大值:9,
最小值:2

数组去重

代码
// 数组去重的两种方法
const array = [2,"5","5",4,5,6,7,8,6,6,2]
//1. 
const uniqueArray =[...new Set(array)]
// 2.
const uniqueArray2 = array.filter((arr,index) => array.indexOf(arr) === index)

console.log(uniqueArray)
console.log(uniqueArray2)

运行效果
> [2,"5",4,5,6,7,8]
> [2,"5",4,5,6,7,8]

填充数组

// 确保数组长度相等,用于处理网格结构,
//不相等的可以用fill来填充
let arr = Array(5).fill('')
console.log(arr)
运行效果
> ["","","","",""]

数组的映射

代码
// 数组的映射
const array = [
    {
        name:'yan mo',
        age:12
    },
     {
        name:'FWT T',
        age:18
    }
]
const name = Array.from(array,({name}) => name)
const age=Array.from(array,({age}) => age)

console.log(name)
console.log(age)

运行效果
> ["yan mo","FWT T"]
> [12,18]

数组截取片段

代码

// 数组截取片段
let array = [0,5,6,3,2,1,2,34]
console.log(array.length)
array.length = 3
console.log(array.length)
console.log(array)
// 相比之效slice方法运行更快,性能会更好
const array1 = array.slice(0,4)
console.log(array1)

运行效果
> 8
> 3
> [0,5,6]
> [0,5,6]

slice()方法

代码

// slice() 方法
let array = [3,5,6,7,8,2,1]
//获取数组中的片段
const result = array.slice(2,4)
console.log(result)
// 获取数组的最后一页
const result1 = array.slice(-1)
console.log(result1)
// 获取索引为1之后的所有数据
const result2 = array.slice(1)
console.log(result2)

const result3 = array.slice(array.length)
console.log(result3)

//获取数组的最后一项
const result4 = array.slice(array.length - 1)
console.log(result4)

运行效果
> [6,7]
> [1]
> [5,6,7,8,2,1]
> []
> [1]
遍历对象的几种方法
const parentObj ={
    a:'aaaa',
    b:Symbol('bbbbb'),
    c:'ccccc'
}
const Obj = Object.create(parentObj, {
    d:{
        value:'ddddd',
        enumerable:true
    },
    a:{
        name:'222',
        value:1,
        enumerable:true
    },
    e: {
        value:'eeeee',
        enumerable:false
    },
    [Symbol('f')]:{
         value:'fffff',
        enumerable:true
    }
})
// 1. Object.keys(obj)
// Object.keys返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性
console.log('Object.keys()',Object.keys(Obj))
// 2.Object.value(obj)
// 返回对象的属性值
console.log('Object.values()',Object.values(Obj))
//Object.entries(obj)
// 返回一个由对象的键值对组成的数组
console.log('Object.entries()',Object.entries(Obj))
// 返回一个由指定对象的所有自身属性名
console.log('Object',Object.getOwnPropertyNames(Obj))
// 返回一个给定对象自身的所有Symbol属性的数组
console.log('Object.getOwnPropertySymbols()',Object.getOwnPropertySymbols(Obj))
// for in 
for(let key in Obj) {
    console.log('for in ',key)
}
// for of
for(let vlaue of Object.values(Obj)) {
    console.log('for of',vlaue)
}
// forEach
Object.values(Obj).forEach(value => {
    console.log('forEach',value)
})
// Refelct.ownKey(obj)
// 返回一个数组。包含对象自身的所有属性
console.log('Reflect',Reflect.ownKeys(Obj))

字符串转换的几种方法
// 字符串转数字的方法
// 1.转换函数parseInt(string,radix)
// radix 是一个可选参数,要解析的数字的基础,在2——36之间,超出的显示为NaN
console.log(parseInt('1234abc',10))
console.log(parseInt('123abc',2))
console.log(parseInt('123abc',8))
console.log(parseInt('123abc',16))
console.log(parseInt('abc',10))
// 2.parseFloat
console.log(parseFloat('123.4d')); // 123.4
console.log(parseFloat('123abc')); // 123
console.log(parseFloat('abc')); // NaN
// 3. 强制类型转换
console.log(Number('123.456')); // 123.456
console.log(Number('123abc')); // NaN
console.log(Number('1.2.3')); // NaN
// 4.弱类型转换
console.log(~~'123'); // 123
console.log(~~'123.456'); // 123
console.log(~~'abc'); // 0
console.log(~~'123abc'); // 0
console.log(~~'0'); // 0
console.log(~~'-123'); // -123
// 5.正好运算符
console.log(+'123'); // 123
console.log(+'123.456'); // 123.456
console.log(+'abc'); // NaN
console.log(+'123abc'); // NaN
console.log(+'0'); // 0
console.log(+'-123'); // -123
// 6.四则运算符中的-、*、/
console.log('123' - 0); // 123
console.log('123.456' * 1); // 123.456
console.log('abc' * 1); // NaN
console.log('123abc' - 0); // NaN
console.log('0' * 1); // 0
console.log('-123' * 1); // -123
console.log('0XFF' / 1); // 255

弹出指定高度和宽度的新窗口事件

  popUp(winUrl) {
                    window.open('https://www.baidu.com', "百度", "width=300,height=400")
                }

数组扁平化,不改变原数组

函数

   flattenDeep(arr) {
          return Array.isArray(arr)?arr.reduce((acc,cur) => [...acc, ...this.flattenDeep(cur)],[]):[arr]
        }

使用

    let test = ["a",["b","c"],["d","e",["g","f"]]]
         let test1 =  this.flattenDeep(test)
         console.log('原数组',test)
         console.log('改变后的数组',test1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值