首页 > 其他分享 >数组总结

数组总结

时间:2023-03-20 09:34:39浏览次数:37  
标签:总结 arr 元素 添加 let 数组 id

1.数组的创建

1.1字面量创建(常用)

var a = [3, 11, 8];

1.2 构造器

实际上 new Array === Array,加不加new 一点影响都没有。
var a = Array(); // []
创建一个数据的数组时出错。

var a = Array(3); // [undefined,undefined,undefined]
var a = Array(3,11,8); // [ 3,11,8 ]

1.3 ES6创建数组

定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。

目的:Array.of() 出现的目的是为了解决上述构造器因参数个数不同,导致的行为有差异的问题。

let a = Array.of(3, 11, 8); // [3,11,8]
let a = Array.of(3); // [3]

2.类数组转换为数组(Arrar.from())

定义:用于将两类对象转为真正的数组(不改变原对象,返回新的数组)。

参数:

第一个参数(必需):要转化为真正数组的对象。

第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

第三个参数(可选): 用来绑定this。
// 1. 对象拥有length属性
let obj = {0: 'a', 1: 'b', 2:'c', length: 3};
let arr = Array.from(obj); // ['a','b','c'];
// 2. 部署了 Iterator接口的数据结构 比如:字符串、Set、NodeList对象 Iterator是一个接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署了Iterator接口,就可以完成遍历操作。

let arr = Array.from('hello'); // ['h','e','l','l']
let arr = Array.from(new Set(['a','b'])); // ['a','b']  可以进行去重操作

3.改变原数组的方法(9个)

ES5:
a.pop()/ a.shift()/ a.push()/ a.unshift()/ a.reverse()/ a.splice()/ a.sort()
ES6:
a.copyWithin() / a.fill

ES5中:

3.1 pop()

作用:方法删除一个数组中的最后的一个元素,并且返回这个元素。

let a = [1,2,3];
let item = a.pop(); // 3
console.log(a); // [1,2]

3.2 shift()

作用:方法删除数组的第一个元素,并返回这个元素。
let a = [1,2,3];
let item = a.shift(); // 1
console.log(a); // [2,3]

3.3 push()

作用:方法可向数组的末尾添加一个或多个元素,并返回新的长度。

参数: item1, item2, …, itemX ,要添加到数组末尾的元素
let a = [1,2,3];
let item = a.push('末尾'); // 4
console.log(a); // [1,2,3,'末尾']

3.4 unshift()

作用:unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

let a = [1,2,3];
let item = a.unshift('开头'); // 4
console.log(a); // ['开头',1,2,3]

3.5 reverse()

作用:reverse()方法用于颠倒数组中元素的顺序。
let a = [1,2,3];
a.reverse();
console.log(a); // [3,2,1]

3.6 splice()

作用:数组的删除、添加、替换,会改变原数组

3.6.1 删除

参数:一个或两个参数

(1)一个参数时:从下标为参数的位置开始删除,一直删除到最后

var arr = [1,2,3,4,5,6]
var n = arr.splice(1)
console.log(n)//[2,3,4,5,6]
console.log(arr)//[1]

(2)两个参数时:数组.splice(开始位置,删除的位数),当开始位置为负数时,从最后一位开始删除。

var arr = [1,2,3,4,5,6]
var n = arr.splice(1,1)//从1的位置开始删除,只删除1个
console.log(n)//[2]
console.log(arr)//[1,3,4,5,6]
console.log(arr)//[1]

3.6.2 添加和替换

参数:至少3个

可以向指定位置插入任意数量的值,只需要提供3个参数:起始位置、要删除的项数(单纯添加时,此项为0,替换时填写要替换的个数)、要插入的项。如果插入多个项,可以再传入任意多个项。

添加:数组.splice(start,0,数组项1,数组项2....)

var arr = [1,5,9]
arr.splice(1,0,4,6)//从1的位置添加4和6
console.log(arr)//[1,4,6,5,9]

let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(a); // ['添加1','添加2',1,2,3,4,5,6,7]

//起始位置为负数时:

let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-1,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(b); // [1,2,3,4,5,6,'添加1','添加2',7] 在最后一个元素的前面添加两个元素

替换:

var arr = [1,4,6,5,9]
arr.splice(1,2,7,8,7)//从1的位置开始,删除两个数组项,然后将7,8,7插入到这个位置
console.log(arr)//[1,7,8,7,5,9]
// 从数组下标0开始,删除3个元素,并添加元素'添加'
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,3,'添加'); // [1,2,3]
console.log(a); // ['添加',4,5,6,7]

//起始位置为负数:
// 从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'

 let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-2,3,'添加1','添加2'); // [6,7]
console.log(b); // [1,2,3,4,5,'添加1','添加2']
数组.splice(start,删除的位数,数组项1,数组项1....)

3.6.3总结

数组如果元素不够,会删除到最后一个元素为止
操作的元素,包括开始的那个元素
可以添加很多个元素
添加是在开始的元素前面添加的

3.7 sort()

作用:sort()方法对数组元素进行排序,并返回这个数组

参数可选: 规定排序顺序的比较函数。

默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。

例:var arr = [5,8,7,4,2,11,3,9,6]
arr.sort()//[11,2,3,4,5,6,7,8,9]//默认按照字符串方法进行排序

3.7.1 自定义排序

var arr = [5,8,7,4,2,11,3,9,6]
arr.sort(function(a,b){//a,b分别代表相邻的两个数组元素
    return a-b;//从小到大[2,3,4,5,6,7,8,9,11]
    return b-a;//从大到小[11,9,8,7,6,5,4,3,2]
})

3.7.2 根据对象的某个属性进行排序

var array = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
 array.sort(function(a,b){
  if(a.id === b.id){// 如果id的值相等,按照age的值降序
   return b.age - a.age
  }else{ // 如果id的值不相等,按照id的值升序
   return a.id - b.id
  }
 })
 // [{"id":2,"age":8},{"id":5,"age":4},{"id":6,"age":10},{"id":9,"age":6},{"id":10,"age":9},{"id":10,"age":2}]

3.7.3 根据中文进行排序

var arr = [
{name:"武",num:"78"},
{name:"汤",num:"75"},
{name:"卢",num:"35"},
{name:"邓",num:"12"},
{name:"刘",num:"21"},
]
//以姓名排序
arr.sort(function(a,b){
    return a.name.localeCompare(b.name,"zh")
})
//以num排序
arr.sort(function(a,b){
    return a.num - b.num//从小到大

3.7.4 自定义比较函数

var array = [{name:'Koro1'},{name:'Koro1'},{name:'OB'},{name:'Koro1'},{name:'OB'},{name:'OB'}];
array.sort(function(a,b){
 if(a.name === 'Koro1'){// 如果name是'Koro1' 返回-1 ,-1<0 a排在b的前面
  return -1
 }else{ // 如果不是的话,a排在b的后面
  return 1
 }
})
// [{"name":"Koro1"},{"name":"Koro1"},{"name":"Koro1"},{"name":"OB"},{"name":"OB"},{"name":"OB"}]

上述只总结了es5中的,es6的还在总结中需要的也可以自行查询

作者:刘晖

标签:总结,arr,元素,添加,let,数组,id
From: https://www.cnblogs.com/DTCLOUD/p/17235181.html

相关文章

  • C++ map用法总结(整理)
    C++map用法总结(整理)1,map简介map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(valu......
  • PHP 将空数组统一 json 序列化为 [] 的弊端
    在PHP中表示空的map或空数组都是以空数组形式,在转化为json数据时,会将空数组统一json序列化成 ​​[]​​,这样就存在一个类型问题。以前我们在与前端交互时一般是与弱类......
  • 判断一个数字在数组中是否存在,并返回---Java
    packagepractice.people.apple;//在数组中查找一个数,看是否存在,请返回值publicclassFoundNumber{publicstaticvoidmain(String[]args){//定义数组intar......
  • #yyds干货盘点# LeetCode面试题:最大子数组和
    1.简述:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例1:输入:nums=[-2,1,-3,4,-......
  • 命名规范——总结各种场景
    **TableSpace<表空间分类>(_数据分类)<_用途><_8K01>**表空间分类:ReGular=TSRGUserTemp=TSUTSystemTemp=TSSTLarGe=TSLG数据分类:CUSTOMER=CUST......
  • 2023.3.19周学习总结
    一.本周任务进度1.线段树分裂合并学习完,并且练习了几个题2.上周的补题也补完了3.打了一把牛客和两把cf还有一把abc4.学习了斜率优化DP的凸包优化二.......
  • 2023/3/19 考试总结
    其实今天没有什么好说的,四个半小时全在做第一题前两个小时在推式子,但其中一个半小时的式子是没用的。这时候突然知道正解怎么做了,发现是道水题,就花了一个半小时将代......
  • 3.19学习总结
    1.TextClock(文本时钟)TextClock是在Android4.2(API17)后推出的用来替代DigitalClock的一个控件!TextClock可以以字符串格式显示当前的日期和时间,因此推荐在Android4.2以后......
  • Collection单列集合总结
    这篇文章记录了Collection集合,List集合,Set集合在文章第七点总结了两大系列集合的五种实现类的区别,有需要的小伙伴可以直接去查看一、什么是集合集合是Java中存储对象......
  • 今日总结-28
    今日打卡所花时间(包括上课):5h代码量(行):300发表博客:4篇(不包括本篇)学习进度和了解到的知识点:今天主要学习了CSSJSP相关知识,Servlet和JSP传值,完善了地铁查询系统,现在我......