JS 数组

函数说明

增删函数(会改变原数组)

push pop unshift shift

let arr = [];
let result;

// 从数组末尾,添加数据
// params: ...items
// return: arr.length
result = arr.push(7, 8, 9)
// arr: [7, 8, 9]
// result: 3

// 删除数组最后一位
// params: null
// return: arr[arr.length - 1](原数组最后一位)
result = arr.pop();
// arr: [7, 8]
// result: 9

// 初始化
arr = [];

// 从数组开头,添加数据
// params: ...[]
// return: arr.length
result = arr.unhift(7, 8, 9);
// arr: [7, 8, 9]
// result: 3

// 删除数组第一位
// params: null
// return: arr[arr.length - 1](原数组第一位)
result = arr.shift();
// arr: [8, 9]
// result: 7
复制代码

遍历函数(不会改变原数据)

key values entres forEash map reduce reduceRight

let arr = [7, 8, 9];
let result;

// 获取数组 下标 迭代器
// params: null
// return: 下标 迭代器
result = arr.keys()

// 获取数组 值   迭代器
// params: null
// return: 值 迭代器
result = arr.values()

// 获取数组 键值 迭代器
// params: null
// return: 键值 迭代器
result = arr.entries()

// 遍历数组
// params: function(value, index, 原数组)
// return: void
arr.forEash((value, index, origin) => {
    console.log(value, index, origin);
}) 

// 遍历数组,处理数组的每一项,返回新的数组
// params: function(value, index, 原数组)
// params: 新数组,数组长度,等于原数据
arr.map((value, index, origin) => {
    return `${value}-${index}-${origin}`
})

// 遍历数组,并返回当前处理结果,给下一次处理函数
// params: function(prev, value, index, 原数组)
// return: 最后一次的处理结果
arr.reduce((prev, value, index, origin) => {
    console.log(`${prev}-${value}-${index}-${origin}`);
    return prev + value;
})

// 逆序遍历数组,并返回当前处理结果,给下一次处理函数
// params: function(prev, value, index, 原数组)
// return: 最后一次的处理结果
arr.reduceRight((prev, value, index, origin) => {
    console.log(`${prev}-${value}-${index}-${origin}`);
    return prev + value;
})
复制代码

查找/筛选 函数

indexOf lastIndexOf find findIndex filter some every includes

let arr = [7, 8, 9, undefined];
let result;

// 查询指定值在数组中的下标, 正序查询匹配到的第一个, 使用 === 进行判断
// params: 指定值
// return: 下标值,没有返回 -1
result = arr.indexOf()
// result: 3

// 查询指定值在数组中的下标, 逆序查询匹配到的第一个, 使用 === 进行判断
// params: 指定值,默认为undefined
// return: 下标值,没有返回 -1
result = arr.lastIndexOf()
// result: 3

//  查询指定值在数组中的下标
// params: function(value,index,origin)
// return: 下标值,没有返回 -1
result = arr.findindex((value, index, origin) => {
    console.log(`${value}-${index}-${origin}`)
    return value === undefined
})
// result: 3

//  查询指定值在数组中的下标
// params: function(value,index,origin)
// return: 下标值,没有返回 -1
 result = arr.find((value, index, origin) => {
    console.log(`${value}-${index}-${origin}`)
    return value === undefined
})
// result: undefined

// 筛选数组中符合条件的元素
// params: function(value,index,origin)
// return: 符合条件的元素组成的新数组
result = arr.filter((value, index, origin) => {
    console.log(`${value}-${index}-${origin}`)
    return value
})
// result: [7, 8, 9]

// 判断数组是否 全部元素 符合条件
// params: function(value,index,origin)
// return: Boolean
result = arr.some((value, index, origin) => {
    console.log(`${value}-${index}-${origin}`)
    return value === undefined
})
// result: false

// 判断数组是否 有元素 符合条件
// params: function(value,index,origin)
// return: Boolean
result = arr.some((value, index, origin) => {
    console.log(`${value}-${index}-${origin}`)
    return value === undefined
})
// result: true
 
// 判断数组是否包含指定值
// params: 任意值
// return: Boolean
result = [NaN].includes(NaN)
// result: true
复制代码

工具函数

let arr = [7, 8, 9, undefined, null,NaN, Infinity];
let a = [1,2,3],b = [4,5,6],c = [7, 8, 9];
let list;
let result;

// 数组中的所有元素放入一个字符串
// params: 分隔符[String]
// return: String
result = arr.join();
// result: "7,8,9,,,NaN,Infinity"

// 连接,合并数组, 返回新的数组
// params: Array
// return: Arrar 合并后的新数组
result = a.concat(b, c);
// result: [1, 2, 3, 4, 5, 6, 7, 8, 9]

// 数组截取
// params: (sat, end)
// return:Array 截取的新数组
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
result = list.slice(0, 5);
// result: [0, 1, 2, 3, 4]
result = list.slice(0, -5);
// result: [0, 1, 2, 3, 4]

// 数组拉平
// params: Number 拉平的层级
list = [1,[2,[3,[4,[5,[6,[7,[8,[9]]]]]]]]];
result = list.flat(5) ;
// result: [1, 2, 3, 4, 5, 6, Array(2)]

// 对执行map操作的数组,进行拉平操作
// params: function(value, index, origin)
list = [0, 1, 2, 3, 4];
result = list.flatMap(val => [val, val+0.5]);
// result: [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5]

// 使用递归的方式扁平化数组
// params:Number 拉伸的层级
// return:Arrar 
list = [1,[2,[3,[4,[5,[6,[7,[8,[9]]]]]]]]];
result = list.flatten(5);
// result: [1, 2, 3, 4, 5, 6, Array(2)] 

// 数组排序(会改变原数组)
// params: function(value, prev) return 大于零:换位置
// return: Array 排序后的原数组 
result = [...a, ...b, ...c].sort((a,b) => b-a);
// result: [9, 8, 7, 6, 5, 4, 3, 2, 1]
result = [...c, ...b, ...a].sort();
// result: [1, 2, 3, 4, 5, 6, 7, 8, 9]

// 数组逆序(会改变原数组)
// return: 逆序后的原数组
list = [...a,...b,...c];
result = list.reverse();
// result: [9, 8, 7, 6, 5, 4, 3, 2, 1]
// result === list

// 数组的截取和替换(会改变原数组)
// params: (start, count, ...items)
// return:Array 新的数组,数组内容为截取的内容
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
result = list.splice(0, 5, 4, 5, 2, 1, 0);
// result: [0, 1, 2, 3, 4]
// list: [4, 5, 2, 1, 0, 5, 6, 7, 8, 9]

// 指定元素填充数组(会改变原数组)
// params: (value, start, end)
// return:Array 填充后的原数组
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
result = list.fill('a', 5, -1); 
// result: [0, 1, 2, 3, 4, "a", "a", "a", "a", 9]

// 当前数组内部,将指定位置的成员复制到其他位置(会改变原数组)
// params: (start, c_start, c_end)
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
result = list.copyWithin(5,5,10)
// result: [5, 6, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码

静态函数

// 把类数组(实现了iterator的数据),转为数组
let map = new Map();
map.set('a', '0').set('b', '1').set('c', '2').set('d', '3').set('e', '4');
result = Array.from(map);
// result: [['a', '0'],['b', '1'],['c', '2'],['d', '3'],['e', '4']

// 把一组数据转为数组
result = Array.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
// result: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享