创建一个新数组,将array与任何数组 或 值连接在一起。
2.1 参数
-
array (Array): 被连接的数组。
-
values: 连接的值。
2.2 返回值
- (Array): 返回连接后的新数组。
2.3 实现
const _concat = function (array, …values) {
const result = […array];
values.forEach(val => {
if (Array.isArray(val)) {
result.push(…val);
} else {
result.push(val);
}
})
return result;
}
2.4 测试
var array = [1];
var other = _concat(array, 2, [3], [[4]]);
console.log(other);
// => [1, 2, 3, [4]]
console.log(array);
// => [1]
创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。返回过滤的新数组
3.1 参数
-
array (Array): 被过滤的数组。。
-
[values] (…Array): 排除的值。
3.2 返回值
- (Array): 返回一个过滤值后的新数组。
3.3 实现
const _difference = (array, diff = []) => {
if (!diff.length || !array.length) return […array];
return array.filter((val) => !diff.includes(val));
};
3.4 测试
_difference([3, 2, 1], [4, 2]);
// => [3, 1]
使用 value 值来填充(替换) array,从start位置开始, 到end位置结束(但不包含end位置)。
注意: 这个方法会改变 array
4.1 参数
-
array (Array): 要填充改变的数组。
-
value (*): 填充给 array 的值。
-
[start=0] (number): 开始位置(默认0)。
-
[end=array.length] (number):结束位置(默认array.length)。
4.2 返回值
- (Array): 返回 array。
4.3 实现
const _fill = (array = [], value, start = 0, end = array.length) => {
const { length } = array;
// 空数组
if (!length) return array;
// 边界
const ends = end > length ? length : end;
if (start > end) return array;
for (let i = start; i < ends; i++) {
array[i] = value;
}
return array;
};
4.4 测试
const array = [1, 2, 3];
_fill(array, “a”);
// => [‘a’, ‘a’, ‘a’]
_fill(Array(3), 2);
// => [2, 2, 2]
_fill([4, 6, 8, 10], “*”, 1, 3);
// => [4, ‘', '’, 10]
按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
5.1 参数
- depth(Number): 指定要提取嵌套数组的结构深度,默认值为 1。
5.2 返回值
- (Any): 返回通过测试(函数内判断)的数组的第一个元素的值。
5.3 实现
// 余光
Array.prototype._flattenDepth = function (depth = 1) {
// 获取调用者
let arr = this;
// 拍平层数校验
if (depth < 1) return arr;
return arr.reduce(
(prev, next, i, n) => [
…prev,
…(Array.isArray(next) ? next._flattenDepth(depth - 1) : [next]),
],
[]
);
};
5.4 测试
const res = [[1], [[2]]];
console.log(res.flat(1))
// => [1, [2]]
console.log(res.flat(2))
// => [1, 2]
将 array 中的所有元素转换为由 separator 分隔的字符串。
6.1 参数
-
array (Array): 要转换的数组。
-
[separator=’,’] (string): 分隔元素。
6.2 返回值
- (string): 返回连接字符串。
6.3 实现
const _join = (array, separator = “,”) => {
return array.reduce((prev, next) => {
return prev ? prev + separator + next : prev + next;
}, “”);
};
6.4 测试
_join([‘a’, ‘b’, ‘c’], ‘~’);
// => ‘abc’
删除数组的最后一个元素并返回删除的元素。
注意: 此方法改变数组的长度!
7.1 返回值
- (any): 返回删除的元素。
7.2 实现
const _pop = function (array) {
const result = array[array.length - 1];
array.length - 1;
return result;
}
7.3 测试
const sites = [‘Google’, ‘Runoob’, ‘Taobao’, ‘Zhihu’, ‘Baidu’];
console.log(pop(sites));
// 输出结果为: “Baidu”
console.log(sites);
// 输出结果为: [‘Google’, ‘Runoob’, ‘Taobao’, ‘Zhihu’]
向数组末尾添加新项目,并返回新长度。
8.1 参数
-
array (Array): 要改动的数组
-
value1 … valueX: (必需)要添加的项目。
8.2 返回值
- (Number): 返回数组的新长度。.
8.3 实现
const _push = function (array, …params) {
const len = array.length;
for (let i = 0; i < params.length; i++) {
array[len + i] = params[i]
}
return array.length;
};
8.4 测试
const arr = [1, 2, 3];
_push(arr, 4);
console.log(arr)
// => [1, 2, 3, 4]
移除数组中callback返回为真值的所有元素,并返回移除元素组成的数组。
注意: filter不同, 这个方法会改变数组 array。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-eT4F8uUH-1715774167844)]
[外链图片转存中…(img-bNi7gcLr-1715774167844)]
[外链图片转存中…(img-MZJNwwBU-1715774167845)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!