当前位置:网站首页>数组去重 数组排序 最大值 求和 类数组转化 过滤数组
数组去重 数组排序 最大值 求和 类数组转化 过滤数组
2022-07-17 16:34:00 【星空小梦】
一、 扁平化嵌套数组/展平和阵列孔——flat()
1、实现效果
var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(2); // [1, 2, 3, 4, 5, 6] //flat方法删除数组中的空槽: var arr3 = [1, 2, , 4, 5]; arr3.flat(); // [1, 2, 4, 5]
该flat([depth])方法创建一个新数组,所有子数组元素以递归方式连接到指定的深度。depth深度级别指定嵌套数组结构应该展平的深度。默认为1。
2、方法解读:
该方法的实质是利用递归和数组合并方法 concat实现扁平。可以使用
Array.reduce()/Array.some()/Array.concat()
利用Array.reduce()和Array.concat()实现
const flat1 = function (arr) {
return arr = arr.reduce((pre, cur) => Array.isArray(cur) ? pre.concat(flat1(cur)) : pre.concat(cur),
[])
}
var arr3 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]];
flat1(arr3); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
利用Array.some()和Array.concat()实现
const flat2 = function(arr){
while(arr.some(item=>Array.isArray(item))){
arr=[].concat(...arr);
}
return arr;
}
var arr3 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]];
flat2(arr3); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
二、数组去重——set()
1、实现效果
Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4,5,6])] //[1,2,3,4,5]
set是ES6新出来的一种一种定义不重复数组的数据类型。
Array.from是将类数组转化为数组。
...是扩展运算符,将set里面的值转化为字符串。
2、方法解读
function unique(arr) {
var result =[];
for (var i = 0; i < arr.length; i++) {
for (var j = i+1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
j=++i;
}
}
result.push(arr[i]);
}
return result;
}
var arr3 = [1, 2, 3, 3, 4, 5, 4];
unique(arr3);//(5) [1, 2, 3, 5, 4]
三、数组排序——sort()
1、实现效果
[1,3,2,5,4].sort(); [1,3,2,5,4].sort((a,b)=>b-a);
2、方法解读
冒泡排序
Array.prototype.bulesort = function () {
let arr = this,
len = arr.length;
for (let outer = len; outer >= 2; outer--) {
for (let inner = 0; inner <= outer - 1; inner++) {
if (arr[inner] > arr[inner + 1]) {
[arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]];
}
}
}
return arr;
}
[3, 4, 2,1].bulesort()//[1,2,3,4]
四、最大值
1、实现效果
Math.max(...[1,2,3,4]); //4
Math.max.apply(this, [1, 2, 3, 4]); //4
[1, 2,3, 4].reduce((prev,cur)=>{
return Math.max(prev, cur);
},0);//4
2、方法解读
先排序,再取值。
五、求和
1、实现效果
[1, 2, 3, 4].reduce((prev,cur)=>{
return prev+cur;
},0); //10
2、方法解读
function sum(arr){
if (arr.length==0){
return 0;
} else if (arr.length == 1){
return arr[0];
}else{
return arr[0]+sum(arr.slice(1));
}
}
sum([1, 2, 3, 4]);//10
六、合并
[1,2,3].concat([5,6]); [...[1,2,4],...[2,3,5,7]]
七、判断是否有值
[2, 3, 5].indexOf(3);//1
[2,3,5].includes(4)//false
[2, 3, 5].find((item) => { item === 3})//1
[2, 3, 5].findIndex((item) => item === 3)//1
[2, 3, 5].some(item=>{return item===3 })//true
八、类数组转化
Array.prototype.slice.call(arguments); Array.prototype.slice.apply(arguments); Array.from(arguments); [...arguments]
九、每一项设置值
//array.fill(value, start, end) [2, 3, 5].fill(true,false,true);//(3) [false, false, false] [2, 3, 5].map(() => 0)//(3) [0, 0, 0]
十、每一项是否满足/某一项是否满足
[2, 3, 5].every(item=>{return item>2}) //false
[2, 3, 5].some(item =>{ return item > 2 })//true
十一、过滤数组
[2, 3, 5].filter(item => { return item > 2 })//(2) [3, 5]
十二、对象和数组转化
Object.keys({ name: '张三', age: 14 })//["name", "age"]
Object.values({name: '张三', age: 14 })// ["张三", 14]
Object.entries({ name: '张三', age:14 }) // (2) [Array(2), Array(2)]0: (2)["name", "张三"]1: (2)["age", 14]
挺好用的,先收藏一下
边栏推荐
- 深度学习参数初始化(二)Kaiming初始化 含代码
- What is the relationship between softmax and cross enterprise?
- Mysql-1366 - Incorrect string value: ‘\xE5\xBC\xA0\xE4\xB8\x89‘ for column ‘userName‘ at row 1
- Research on downlink spectrum efficiency of 6G space earth integrated network high altitude platform base station
- Day 1 Experiment
- GET 请求和 POST 请求的区别与使用示例
- Chinese garbled code problem in reading binary files
- 如何运行.sh脚本文件
- Arbitrum Nova 发布!打造低成本高速度的游戏社交领域专用链
- 阿荷投资的思考
猜你喜欢

2022-07-07:Spire.Office 7.7.2 for net 闪亮登场

OpenCV 教程 03: 如何跟踪视频中的某一对象

Leetcode 20. 有效的括号

Day 1 Experiment

脉冲函数、阶跃函数和斜坡函数及脉冲响应

Day 4 homework

Nature子刊 | 地下水固碳速率与寡营养海洋系统固碳速率相近

A skill; Teach you to easily download Tiktok live video, Tiktok live video download new scheme!

Opencv based on DLCO descriptor matching

C language drawing example - flower pattern
随机推荐
Core base station_ The error "no gateways configured" is reported when starting the CPA file
我最喜欢的10个机器学习公众号
What is the relationship between softmax and cross enterprise?
Hcip fourth day notes
String correlation function (II)
3. Golang string type
Experiment the next day
2022 low voltage electrician examination questions and online simulation examination
Committer identity unknown *** Please tell me who you are...
zabbix-snmp监控
三分钟了解mysql中主键、外键、非空、唯一、默认约束是什么,以及如何创建表
Test whether the time-consuming of vector, list and set calling empty and size is constant
Ah Qu's thinking
PPPoE dial up
SwiftUI Swift 中的数据持久性,保存数据的不同方法
Solution: function RGB is missing argument $green Problems of
2022-07-07:Spire. Office 7.7.2 for net debuted
Leetcode 20. 有效的括号
Leetcode 150. 逆波兰表达式求值
Opencv based on DLCO descriptor matching