热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入学习JS—js中的数组(Array)操作

一、数组数组对象的作用是:使用单独的变量名来存储一系列的值JavaScript中已经封装了许多方法,让我们直接调用就可以完成一些十分常见的需求。二、常
一、数组

数组对象的作用是:使用单独的变量名来存储一系列的值

Javascript中已经封装了许多方法,让我们直接调用就可以完成一些十分常见的需求。

二、常用数组方法

1、新增元素


(1)、push()


语法:array.push(item1, item2, …, itemX)
数组的末尾添加新的元素,返回新增元素后的数组长度。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push(["Kiwi",'Watermelon']);
console.log(fruits);

在这里插入图片描述

(2)、unshift()


语法:array.unshift(item1,item2, …, itemX)
与push方法类似,但是会将新添加的元素加到数组开头,返回新增元素后的数组长度。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Kiwi",'Watermelon');
console.log(fruits);

在这里插入图片描述

(3)、concat()


语法:array1.concat(array2,array3,…,arrayX)
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。其中参数不一定为数组,也可以为单个元素。
返回一个新的数组

注意:concat()不会改变原数组,而是返回连接后的新数组

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = "Robin";//可以是单个元素
var children = hege.concat(stale,kai);
console.log(children);

在这里插入图片描述
contact()连接的并不是数组,而是数组中的元素。

2、删减元素


(1)、pop()


语法:array.pop()
pop() 方法用于删除数组的最后一个元素并返回删除的元素。

var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.pop();console.log(fruits);

在这里插入图片描述

(2)、shift()


语法:array.shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值(也就是删除的元素)。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift();
console.log(fruits);

在这里插入图片描述

3、删除或者添加元素


(1)、splice()


语法:array.splice(index,howmany,item1,…,itemX)
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
splice()是一个十分强大的函数,既可以添加元素,也可以删除元素。当参数howmay为0时,表示不删除元素。

在这里插入图片描述

4、检测元素


(1)、filter()


语法:array.filter(function(currentValue,index,arr), thisValue)
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

返回数组ages中大于18的元素。

var ages = [32, 33, 16, 40];function checkAdult(age) {return age >= 18;
}console.log(ages.filter(checkAdult));

在这里插入图片描述
find()函数用法与filter()一样,但是只会返回满足条件的第一个值,之后便不会调用函数了,没有满足的值则返回undefine。

(2)、every()


语法:array.every(function(currentValue,index,arr), thisValue)
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。

检测数组ages中元素是否都大于18。

var ages = [32, 33, 16, 40];function checkAdult(age) {return age >= 18;
}console.log(ages.every(checkAdult));

在这里插入图片描述
some()函数用法与every()一样,但是只要存在一个满足的值便返回true,并且不会再检测后面的元素了。

(3)、includes()


语法:arr.includes(searchElement)或者arr.includes(searchElement, fromIndex)
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。


let site = ['nowcoder', 'google', 'taobao'];console.log(site.includes('nowcoder'));
// trueconsole.log(site.includes('baidu'));
// false

在这里插入图片描述

5、遍历数组

我们可以使用for循环、for…i…、for…of…来遍历数组,也可以直接调用下面的方法来遍历数组,并且可以附加一些特定的功能。

(1)、forEach()


语法:array.forEach(function(currentValue, index, arr), thisValue)
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
可以用来遍历数组或者处理数组中的每个元素。

var sum = 0;
var numbers = [65, 44, 12, 4];function myFunction(item) {sum += item;
}numbers.forEach(myFunction);
console.log(sum);

在这里插入图片描述

(2)、map()


语法: array.map(function(currentValue,index,arr), thisValue)
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
主要用来处理每个数组元素。
注意:map() 不会改变原始数组。

var numbers = [4, 9, 16, 25];
console.log(numbers.map(Math.sqrt));

在这里插入图片描述

6、其他常用数组


(1)、数组排序sort()


语法:array.sort(sortfunction)
sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
注意:会改变原数组。

数字数组升序或降序排序。

var points1 = [40,100,1,5,25,10];
var points2 = [40,100,1,5,25,10];
points1.sort(function(a,b){return a-b});
points2.sort(function(a,b){return b-a});
console.log('升序:',points1);
console.log('降序:',points2);

在这里插入图片描述
注意:如果数字数组中带负数的话,必须加上排序的规则函数,否则……

var points3 = [-2, -1, 1, 0, 2];
points3.sort();
console.log('带负数的数组升序: ',points3);

在这里插入图片描述
原因:

如果调用sort方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。所以应该自定义排序规则函数。


(2)、数组反转reverse()


用法:array.reverse()
reverse() 方法用于颠倒数组中元素的顺序。
会改变原数组。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
console.log(fruits);

在这里插入图片描述

(3)、数组计算reduce()


语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
在这里插入图片描述

var numbers = [65, 44, 12, 4];function getSum(total, num) {console.log(num)return total + num;
}
console.log(numbers.reduce(getSum));

在这里插入图片描述
可以看到reduce()是从数组的开头开始往后递加的。

reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。


(4)、isArray(obj)


判断obj是否是数组


(5)、array.join(separator)


把数组中的所有元素转换一个字符串,元素是通过指定的分隔符进行分隔的。如果省略separator,则使用逗号作为分隔符。


(6)、array.indexOf(item,start)


indexOf() 方法可返回数组中某个指定的元素位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
如果你想查找字符串最后出现的位置,可以使用 lastIndexOf() 方法。


三、补充

方法太多了,补充一下那些方法会改变原数组,那些不会改变:

1、改变原来数组

新增数组元素:push()、unshift()
删除数组元素:pop()、shift()、
删除或者新增元素: splice()

tips: pop和shift均不支持参数,即使调用时加了参数也没什么意义。

数组排序:sort()

2、不改变原数组

数组拼接: array1.contact(array2, array3……)
数组转字符串: array.join()
数组截取:array.slice(start, end)

一般返回数组或者字符串的方法,都不会改变原数组


推荐阅读
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 本文介绍了Foundation框架中一些常用的结构体和类,包括表示范围作用的NSRange结构体的创建方式,处理几何图形的数据类型NSPoint和NSSize,以及由点和大小复合而成的矩形数据类型NSRect。同时还介绍了创建这些数据类型的方法,以及字符串类NSString的使用方法。 ... [详细]
  • 简述在某个项目中需要分析PHP代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑ÿ ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
author-avatar
扫地僧2502896033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有