一、生成一个类似[1-100]的数组;
思路: 生成一个length
是100的数组 , 循环数组添加值
1.1利用fill
方法填充值进数组,map
循环数组添加index
值
let arr = new Array(100).fill(0).map((item,index)=>index+1)
1.2利用Array.from()
方法
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。(详情看上一篇)
const buildArray = Array.from(Array(100),(v,k)=>k+1)
二、数组浅拷贝;
const arr = [1, 2, 3]
const arrClone = [...arr]
// 对象也可以这样浅拷贝
const obj = { a: 1 }
const objClone = { ...obj }
三、数组合并;
const arr1 = [1, 2, 3]
const arr2 = [4, 5, 6]
const arr3 = [7, 8, 9]
const arr = [...arr1, ...arr2, ...arr3]
arr1.concat(arr2, arr3)//也可以合并
四、数组去重;
这里只写最新的最简单快捷的数组去重的方法,
new Set(arr)
接受一个数组参数并生成一个set结构的数据类型。set数据类型的元素不会重复且是Array Iterator
,所以可以利用这个特性来去重。
const arr = [1, 1, 2, 2, 3, 4, 5, 5]
const newArr = [...new Set(arr)]
五、数组取交集;
const a = [0, 1, 2, 3, 4, 5]
const b = [3, 4, 5, 6, 7, 8]
const last= [...new Set(a)].filter(item => b.includes(item))
// [3, 4, 5]
六、数组取差集;
const a = [0, 1, 2, 3, 4, 5]
const b = [3, 4, 5, 6, 7, 8]
const diffValues = [...new Set([...a, ...b])].filter(item => !b.includes(item) || !a.includes(item)) // [0, 1, 2, 6, 7, 8]
七、数组转对象;
const arr = [1, 2, 3, 4]
const newObj = {...arr} // {0: 1, 1: 2, 2: 3, 3: 4}
const obj = {0: 0, 1: 1, 2: 2, length: 3}
// 对象转数组不能用展开操作符,因为展开操作符必须用在可迭代对象上
let newArr = [...obj] // Uncaught TypeError: object is not iterable...
// 可以使用Array.form()将类数组对象转为数组
let newArr = Array.from(obj) // [0, 1, 2]
八、数组常用遍历;
8.1 检测数组是否有元素符合判断条件;
const arr = [1, 2, 3, 4, 5]
const hasNum = arr.some(item => typeof item === 'number')
8.2 检测数组所有元素是否都符合判断条件;
const arr = [1, 2, 3, 4, 5]
const isAllNum = arr.every(item => typeof item === 'number')
8.3 找到第一个符合条件的元素/下标;
const arr = [1, 2, 3, 4, 5]
const findItem = arr.find(item => item === 3) // 返回子项
const findIndex = arr.findIndex(item => item === 3) // 返回子项的下标
九、数组中的reduce
使用时机;
8.1 假如有如下每个元素都由字母's'加数字组成的数组arr,现在找出其中最大的数字:(arr不为空)
//题目
const arr = ['s0', 's4', 's1', 's2', 's8', 's3'];
//常规操作
const last = Math.max(...arr.map(item=>parseInt(item.replace('s',''))));
console.log(last);//8
//reduce操作
const maxS = arr.reduce((prev, cur) => {
const curIndex = Number(cur.replace('s', ''))
return curIndex > prev ? curIndex : prev
}, 0)