Javscript数组中最常用的方法(建议收藏)

let people = [“张三”, “李四”];

let item = people.pop(); // 取得最后一项

console.log(item) // 李四

console.log(people.length) // 1

shift()

shift()方法用于删除数组的第一项,同时减少数组的length 值,返回被删除的项,对原数组有影响;

let people = [“张三”, “李四”];

let item = people.shift(); // 取得第一项

console.log(item) // 张三

console.log(people.length) // 1

splice()

传入两个参数,分别是开始位置,删除元素的数量,返回包含删除元素的数组,对原数组有影响;

let people = [“张三”, “李四”, “王二”];

let removed = people.splice(0,1); // 删除第一项

console.log(people ); // [“李四”, “王二”]

console.log(removed); // [“张三”],只有一个元素的数组

slice()

slice() 方法以新的数组对象,返回数组中被选中的元素,选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。不会影响原始数组;

let people = [“张三”, “李四”, “王二”, “麻子”, “王朝”];

let people2 = people.slice(1);

let people3 = people.slice(1, 4);

console.log(people) // [“张三”, “李四”, “王二”, “麻子”, “王朝”]

concole.log(people2); // [“李四”, “王二”, “麻子”, “王朝”]

concole.log(people3); // [“李四”, “王二”, “麻子”]

修改原来数组的内容,常用splice()

splice()

splice()传入三个参数,分别是开始位置,要删除元素的数量,要插入的任意多个元素,返回删除元素的数组,对原数组产生影响

let people = [“张三”, “李四”, “王二”];

let removed = people.splice(1, 1, “麻子”, “王朝”); // 插入两个值,删除一个元素

console.log(people ); // [“张三”, “麻子”, “王朝”, “王二”];

console.log(removed); //[“李四”],只有一个元素的数组

即查找元素,返回元素坐标或者元素值

  • indexOf()

  • includes()

  • find()

indexOf()

返回要查找的元素在数组中的位置,如果没找到则返回-1

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

numbers.indexOf(4) // 3

includes()

返回要查找的元素在数组中的位置,找到返回true,否则false

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

numbers.includes(4) // true

find()

返回第一个匹配的元素

const people = [

{

name: “Matt”,

age: 27

},

{

name: “Nicholas”,

age: 29

}

];

people.find((element, index, array) => element.age < 28) // // {name: “Matt”, age: 27}


排序方法

===================================================================

数组本身有两个方法可以用来对元素重新排序:

  • reverse()

  • sort()

定义排序函数:

  • 冒泡排序

  • 插入排序

  • 递并排序

  • 计数排序

reverse()

顾名思义,将数组元素方向排列

let values = [1, 2, 3, 4, 5];

values.reverse();

alert(values); // 5,4,3,2,1

sort()

sort()方法接受一个比较函数,用于判断哪个值应该排在前面

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

1.若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

2.若 a 等于 b,则返回 0。

3.若 a 大于 b,则返回一个大于 0 的值。

function compare(value1, value2) {

if (value1 < value2) {

return -1;

} else if (value1 > value2) {

return 1;

} else {

return 0;

}

}

let values = [0, 1, 10, 5, 15];

values.sort(compare);

alert(values); // 0,1,5,10,15

冒泡排序

排序规则:比较相邻元素,符合比较条件,交换位置较大的往后排,反复比较交换,直到所有数据都符合排序条件,得出排序效果,结束排序。

排序动态示意:

在这里插入图片描述

var arr = [3,4,1,2,21,5,15,6,63];

function BubbleSort(ary){

for(var i = 0; i < ary.length - 1; i++){

for(var j = i + 1; j < ary.length; j++){

var current = ary[i];

if(current > ary[j]){

var tmp = ary[j];

ary[j] = current;

ary[i] = tmp;

}

}

}

return ary;

}

1

BubbleSort(arr); // [1, 2, 3, 4, 5, 6, 15, 21, 63]

插入排序

排序规则:插入排序得比喻成斗地主,手里摸牌之后都是按照从小到大的顺序。每摸到一张牌就把他们插入到合适的位置,使得他们比后面小,比前面大或者相等。

排序动态示意:

在这里插入图片描述

var arr = [3,4,1,2,21,5,15,6,63];

function InsertSort(ary){

var temp;

for (var i = 1; i < ary.length; i++) {

for (var j = i-1; j >=0; j–) {

if (ary[j+1] < ary[j]) {

temp = ary[j+1];

ary[j+1] = ary[j];

ary[j] = temp;

} else if (ary[j+1] >= ary[j]) {

break;

}

}

}

return ary;

}

InsertSort(arr); // [1, 2, 3, 4, 5, 6, 15, 21, 63]

递并排序

排序规则:将长的数组分解为短的数组,一直分到最后,单个单个数组比较,我们就认为,只有一个元素的数组是有序的。然后再逐个的合并。

排序动态示意:

在这里插入图片描述

var arr = [3,4,1,2,21,5,15,6,63];

function MergeSort(ary) { //采用自上而下的递归方法

var len = ary.length;

if(len < 2) {

return ary;

}

var middle = Math.floor(len / 2),

left = ary.slice(0, middle),

right = ary.slice(middle);

return merge(mergeSort(left), mergeSort(right));

}

function merge(left, right)

{

var result = [];

while (left.length && right.length) {

if (left[0] <= right[0]) {

result.push(left.shift());

} else {

result.push(right.shift());

}

}

while (left.length)

result.push(left.shift());

while (right.length)

result.push(right.shift());

return result;

}

MergeSort(arr); // [1, 2, 3, 4, 5, 6, 15, 21, 63]

计数排序

排序规则:

  • 找出待排序的数组中最大和最小的元素,然后建立一个数组C用于统计待排数组中最小元素到最大元素区间中每个元素出现次数;

  • 统计数组中每个值为i的元素出现的次数,存入数组C的第i项;

  • 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);

  • 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1

排序动态示意:

在这里插入图片描述

var arr = [3,4,1,2,21,5,15,6,63];

function CountSort(ary){

let obj={};

for(let i=0; i<ary.length; i++){

if(!obj[ary[i]]){

obj[ary[i]]=1;

}else{

obj[ary[i]]++;

}

}

let index=0;

//遍历对象属性名,按顺序放回覆盖原数组

for(let key in obj){

while(obj[key]>0){

ary[index]=Number(key);

obj[key]–;

index++

}

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
厂,18年进入阿里一直到现在。**

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-OD6GgLqu-1715534195928)]

[外链图片转存中…(img-1uuAaWLa-1715534195929)]

[外链图片转存中…(img-Uvj8QlI3-1715534195929)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值