Lambda博客
  • 自我介绍
  • SSR
    • 浅谈SSR
  • React
    • 页面路由——React-Router
    • 管好你的状态——React-Redux
    • 一个哪行——React详解
    • 左膀右臂一个不少——React初探
  • 问题记录
    • js-xlsx实现纯前端导出excel表格
    • 前端开发需要了解的东西
    • 打造高性能网站
  • JavaScript学习笔记
    • 语法和API
    • js-垃圾回收
    • 收集的JS使用技巧
    • 执行机制
    • 原型和原型链
    • 执行上下文
    • 事件循环
    • JavaScript手写代码
    • 43道JS面试题
    • 悄悄的带走了你的东西——闭包详解
    • 你是个富二代吗?——JavaScript作用域链
    • 捉摸不透的女生——JavaScript类型转换
    • 这是你的女神!——JavaScript
  • 网络学习笔记
    • 强不强——HTTP-协商缓存VS强缓存
    • 网络缓存
    • 我要飞的更高——计算机网络
    • 快点!再快点!——CDN
    • 喜怒哀乐多状态——HTTP状态码
    • 你会爱上我的(ಥ_ಥ) ——TCP详解
    • 隔壁老王想篡位?门都没有——同源策略
  • 软技能
  • 安全专题
    • 保护好自己——网站安全,预防
  • 浏览器兼容性
    • 我是个好人——浏览器兼容性
  • 多图片加载——懒加载详解
  • 数据结构
  • Node
    • Node初探
  • Typescript
    • JS Plus 真香——初探 TypeScript
  • 设计模式
    • 不要花里胡哨,要一套一套——设计模式(1)
    • 学会“套路”——设计模式(2)
  • Vue
    • 实操实干——vue实例记录
    • 停下来,问问自己——Vue-刨根问底
    • 你有喘息的机会吗?——Vue,逐步了解
    • 你累吗?来来来,安利框架——Vue-初次见面
  • 小程序
    • 今天天气怎么样——记一次小程序开发
  • Webpack
    • 蛋糕分割整合工具——Webpack-前端工程化
  • 你一块,我一块——Web-modules 前端模块化
  • HTML5
    • 你会画小猪佩奇吗?—— canvas
    • 画个矢量图——HTML5-SVG
    • 听说你爱闹腾——HTML5-多媒体
    • 动画神器——HTML5-requestAnimationFrame
    • 留下痕迹——HTML5-客户端存储
    • 你知道指北针吗?——HTML5-DeviceMotionEvent
    • 你在哪啊?我在这啊——HTML5-Geolocation
    • 你到这,你到那——HTML5-拖拽
    • 你从这,到那——HTML5-拖拽上传文件
    • 开启前端之路——HTML 标签
  • 瀑布流(无限滚动)
  • 我是怎么来的?——浏览器渲染原理
  • Css
    • 由大变小,你行吗 —— 移动端
    • 动起来,这样比较炫—— CSS3 动画
    • 请不要拐弯抹角 —— CSS3 选择器
    • 想炫吗?—— CSS3 属性
    • 最后的最后——CSS自问自答
    • 万事开头难?——深入学习前端常见布局
    • 一入前端深似海——BFC剖析
    • 还有哪些好玩的东西——CSS提升
    • 那些好看的页面是怎么形成的——CSS 初识
  • 拿个小本本记下——Cookie
由 GitBook 提供支持
在本页
  • JavaScript常用方法
  • 删除数组中的重复项
  • 替换数组中的特定值
  • Array.form 达到 .map 的效果
  • 置空数组
  • 将数组转换为对象
  • 将数据填充数组
  • 数组合并
  • 求两个数组的交集
  • 从数组中删除虚值
  • 从数组中获取随机值
  • 反转数组
  • lastIndexOf() 方法
  • 对数组中的所有值求和
  • 邮箱验证
在GitHub上编辑
  1. JavaScript学习笔记

收集的JS使用技巧

JavaScript常用方法

数组是 JS 最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮助咱们提高开发效率。

删除数组中的重复项

const fruits = [
  'banana',
  'apple',
  'orange',
  'watermelon',
  'banana',
  'apple',
  'orange'
]

// 第一种方式
const uniqueFruits = Array.from(new Set(fruits))
console.log(uniqueFruits) // [ 'banana', 'apple', 'orange', 'watermelon' ]

// 第二种方式
const uniqueFruits2 = [...new Set(fruits)]
console.log(uniqueFruits2) // [ 'banana', 'apple', 'orange', 'watermelon' ]

替换数组中的特定值

const userNames = ['Lambda1', 'Lambda2', 'Lambda3', 'Lambda4']
userNames.splice(0, 2, 'Lambda替换1', 'Lambda替换2')
console.log(userNames) // [ 'Lambda替换1', 'Lambda替换2', 'Lambda3', 'Lambda4' ]

Array.form 达到 .map 的效果

const friends = [
  {
    name: 'Lambda',
    age: 18
  },
  {
    name: 'Lambda1',
    age: 19
  },
  {
    name: 'Lambda2',
    age: 20
  },
  {
    name: 'Lambda3',
    age: 21
  },
  {
    name: 'Lambda4',
    age: 22
  },
  {
    name: 'Lambda5',
    age: 23
  }
]

const friendsNames = Array.from(friends, ({ name }) => name)
console.log(friendsNames) // [ 'Lambda', 'Lambda1', 'Lambda2', 'Lambda3', 'Lambda4', 'Lambda5' ]

置空数组

const friends = [
  {
    name: 'Lambda',
    age: 18
  },
  {
    name: 'Lambda1',
    age: 19
  },
  {
    name: 'Lambda2',
    age: 20
  },
  {
    name: 'Lambda3',
    age: 21
  },
  {
    name: 'Lambda4',
    age: 22
  },
  {
    name: 'Lambda5',
    age: 23
  }
]

friends.length = 0
console.log(friends) // []
// 为什么要用 array.length = 0 这种写法来清空 array,用 array = [] 不是更好吗?因为数组的 length 属性一般是不去修改的。
// array = []的话会产生一个新的空数组并让array指向它。这样做有一个问题:其他引用array的对象不会受影响,得到的还是之前的值,而array.length = 0会直接改变原数组。

将数组转换为对象

const users = ['Lambda1', 'Lambda2', 'Lambda3', 'Lambda4']
const usersObj = {
  ...users
}

console.log(usersObj) // { '0': 'Lambda1', '1': 'Lambda2', '2': 'Lambda3', '3': 'Lambda4' }

将数据填充数组

const newArray = new Array(10).fill('1')
console.log(newArray) // ['1', '1', '1', '1','1', '1', '1', '1','1', '1']

数组合并

const fruits = ['banana', 'apple', 'orange', 'watermelon']
const meat = ['poultry', 'beef', 'fish']
const vegetables = ['potato', 'tomato', 'cucumber']
const food = [...fruits, ...meat, ...vegetables]
console.log(food) // ['banana','apple','orange','watermelon','poultry', 'beef','fish','potato','tomato',  'cucumber']

求两个数组的交集

const numOne = [0, 1, 2, 3, 4, 5]
const numTwo = [4, 5, 6, 7, 8, 9]
const duplicatedValues = [...new Set(numOne)].filter((item) =>
  numTwo.includes(item)
)
console.log(duplicatedValues) // [4,5]

从数组中删除虚值

在 JS 中,虚值有 false, 0,’’, null, NaN, undefined。咱们可以 .filter() 方法来过滤这些虚值。

const mixedArr = [0, 'blue', '', NaN, 9, true, undefined, 'white', false]
const trueArr = mixedArr.filter(Boolean)

console.log(trueArr) // [ 'blue', 9, true, 'white' ]

从数组中获取随机值

const names = ['Lambda1', 'Lambda2', 'Lambda3', 'Lambda4']
const randomNames = names[Math.floor(Math.random() * names.length)]

console.log(randomNames) // Lambda3

反转数组

const names = ['Lambda1', 'Lambda2', 'Lambda3', 'Lambda4']
const reverseNames = names.reverse()

console.log(reverseNames) // [ 'Lambda4', 'Lambda3', 'Lambda2', 'Lambda1' ]

lastIndexOf() 方法

const nums = [1, 5, 8, 1, 84, 184, 81, 3]
const lastIndex = nums.lastIndexOf(5)

console.log(lastIndex) // 1

对数组中的所有值求和

const nums = [1, 5, 2, 8, 9]
const sum = nums.reduce((x, y) => x + y)
console.log(sum) // 25

邮箱验证

var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})\$/
上一页js-垃圾回收下一页执行机制

最后更新于3年前