js数组部分实现
Posted 把我当做一棵树叭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数组部分实现相关的知识,希望对你有一定的参考价值。
1.扁平化数组
arr.flat(n),n表示扁平化的次数,为Infinity
let arr = [1, [2, 3, [4, 5]]]; arr.flat(Infinity) function flatten(arr) { while(arr.some(item=>Array.isArray(item))){ arr=[].concat(...arr) } return arr } flatten(arr)
2.去重
运用扩展运算符和set
let arr = [2, 3, 4, 5, 1, 2, 3, 4]; let newArr = [...new Set(arr)];
Array.prototype.distinct = function() { let arr = this, result = [], len = arr.length, i, j; for (i = 0; i < len; i++) { for (j = i + 1; j < len; j++) { if (arr[i] === arr[j]) { j = ++i; } } result.push(arr[i]); } return result; };
3.排序
arr.sort((a,b)=>a-b)
冒泡排序:相邻两两比较
Array.prototype.bubleSort = function() { let arr = this, len = arr.length; for (let i = 1; i < len; i++) { for (let j = 0; j < len - i; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } }; arr.bubleSort();
选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
Array.prototype.bubleSort = function() { let arr = this, len = arr.length; for (let i = 0; i < len; i++) { for (let j = 0; j < len; j++) { if (arr[j] > arr[i]) { [arr[i], arr[j]] = [arr[j], arr[i]]; } } } return arr; //其实不用这句话,直接改动的就是原数组 }; arr.bubleSort()
虚插入实现方法
Array.prototype.resetSort = function() { let arr = this; let newArr = []; while (arr.length > 0) { newArr.push(Math.min(...arr)) arr.splice(arr.indexOf(Math.min(...arr)), 1); } return newArr }; let newArr=arr.resetSort()
以上是关于js数组部分实现的主要内容,如果未能解决你的问题,请参考以下文章