类数组转数组
ES5解决方案
let arr = Array.prototype.slice.call(arrlike)
ES6解决方案
let arr = Array.from(arrlike) // 使用Array.from let arr = [...arrlike] // 使用拓展运算符
对象转数组
首先,我们来看两个方法 Object.keys() 、Object.values()
Object.keys(obj) 返回的是一个由obj对象的键名 组成的数组,obj可以是数组
Object.values(obj) 返回的是一个由obj对象的值 组成的数组
这两个方法有一些妙用,看下面代码:
//判断对象是否为空 const isEmpty = (obj) => Object.keys(obj).length !== 0 //字符串转为数组 let arr = Object.values('abc') //arr = ['a','b','c']
对象的遍历
const me = { firstName: 'dell', lastName: 'lee', } let arrme = [ ]
// 命令式风格 for (const [key, value] of Object.entries(me)) { arrme.push(`${value}`) }
//函数式
Object.entries(me).forEach(([key, value]) => console.log(`${key}: ${value}`))
字符串转数组方法总结
console.log(Array.from('abcd')) console.log([...'abcd']) console.log('abcd'.split('')) //推荐使用,兼容性好
构建重复值得数组用 fill()
let arr = new Array(6).fill(6) //[6,6,6,6,6,6]
数组的方法总结
1 插入删除类
push/pop 数组末尾添加/删除
unshift/shift 数组开头添加/删除
splice 可删除,可插入
2 截取连续子集
slice(start,end)
3 查找元素类
arr.indexOf() indexOf() 方法可返回数组中某个指定的元素(第一个)位置,没找到返回-1
arr.lastIndexOf() lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找,没找到返回-1
includes() 用来判断一个数组是否包含一个指定的值 如果包含则返回 true arr.includes(item)
find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
4 拼接
arr.join('+') 拼接成字符串
arr1.concat(arr2) 拼接数组
5 判断是否为数组
arr.isArray()
6 排序类
sort() 排序
reverse() 翻转数组
7 集合变换类
forEach 无返回值,常用于存粹的遍历,大多数情况可以替代 for 循环使用 不能变量对象,可以使用for in
filter 返回原数组的子集,不改变原数组,用于对原数组的进行过滤筛选
let newArr = [1,2,3,4,5,6,7].filter((item,index,arr) => { return item % 2 == 0 })
map 返回的和原数组长度相同的映射数组,用于映射到另外一个数组
let newArray = [1,2,3,4].map((item,index,arr) => { return item + 1 })
reduce/reduceRight 返回一个和初始值类型相同的值,中文叫归并操作,用于遍历数组每个元素收集需要的数据返回一个值
const scores = [ { subject: 'math', score: 88 }, { subject: 'chinese', score: 95 }, { subject: 'english', score: 80 } ]; const dis = { math: 0.5, chinese: 0.3, english: 0.2 } const sum = scores.reduce((pre,item) => { return pre + item.score * dis[item.subject] },0)