详解JS数组方法


Posted in Javascript onNovember 20, 2021

一、会修改原数组

1.push():

(在数组结尾处)向数组添加一个新的元素

push() 方法返回新数组的长度

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

2.pop():

方法从数组中删除最后一个元素

可以接收pop()的返回值,是被弹出的值"Mango"

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

3.shift():

删除首个数组元素

可以接收删除的值

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

4.unshift():

(在开头)向数组添加新元素

返回新数组的长度。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon");

5.splice():

用于向数组添加新项

第一个参数(2)定义了应添加新元素的位置(拼接)。

第二个参数(0)定义应删除多少元素。

其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。

splice() 方法返回一个包含已删除项的数组

也可以通过设置参数来删除数组中元素

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");
//["Banana","Orange","Lemon","Kiwi","Apple","Mango"]
 var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1);
//["Orange", "Apple", "Mango"]

6.sort():

以字母顺序对数组进行排序

如果是对数字进行排序,则需要注意。 "25" 大于 "100",因为 "2" 大于 "1"。我们通过一个比值函数来修正此问题。

sort()也可以通过修改比较函数来排序对象数组

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); 
 var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});//升序
points.sort(function(a, b){return b - a});//降序
points.sort((a, b)=>{return b - a});//箭头函数
 var cars = [
    {type:"Volvo", year:2016},
    {type:"Saab", year:2001},
    {type:"BMW", year:2010}
]
cars.sort(function(a, b){return a.year - b.year});//比较年份(数字)
cars.sort(function(a, b){//比较类型(字符串)
	  var x = a.type.toLowerCase();
	  var y = b.type.toLowerCase();
	  if (x < y) {return -1;}
	  if (x > y) {return 1;}
	  return 0;
});

7.reverse():

反转数组中的元素

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

二、不修改原数组

1.toString():

把数组转换为数组值(逗号分隔)的字符串。

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

2.join():

可将所有数组元素结合为一个字符串。

它的行为类似 toString(),但是还可以规定分隔符

var fruits = ["Banana", "Orange", "Apple", "Mango"]
console.log(fruits.join(" * "))
//Banana * Orange * Apple * Mango

3.concat():

通过合并(连接)现有数组来创建一个新数组。可以连接多个

var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys);   // 连接 myGirls 和 myBoys
 var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3);   // 将arr1、arr2 与 arr3 连接在一起

4.slice() :

方法用数组的某个片段切出新数组。

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1);//从第一个到最后
//["Orange", "Lemon", "Apple", "Mango"]
 var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);//从第一个到第三个(不包括3)
//["Orange", "Lemon"]

5.map():

将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组

let arr = [1, 2, 3, 4, 5]
let newArr = arr.map(x => x*2)//简写的箭头函数
//arr= [1, 2, 3, 4, 5]   原数组保持不变
//newArr = [2, 4, 6, 8, 10] 返回新数组

6.forEach():

将数组中的每个元素执行提供的函数,没有返回值,注意和map方法区分

let arr = [1, 2, 3, 4, 5]
arr.forEach(x => {
    console.log(2*x)
    //return x*2 返回值没有用,此函数没有返回值
})

7.filter():

此方法是将所有元素进行判断,将满足条件的元素作为一个新的数组返回。函数里面写的是条件!!!

let arr = [1, 2, 3, 4, 5]
let newArr = arr.filter(value => value >= 3 )
//或者
let newArr = arr.filter(function(value) {return value >= 3} )
console.log(newArr)
//[3,4,5]

8.every():

此方法是将所有元素进行判断返回一个布尔值,如果所有元素都满足判断条件,则返回true,否则为false

let arr = [1, 2, 3, 4, 5]
const isLessThan4 = value => value < 4
const isLessThan6 => value => value < 6
arr.every(isLessThan4 ) //false
arr.every(isLessThan6 ) //true

9.some():

此方法是将所有元素进行判断返回一个布尔值,如果存在元素满足判断条件,则返回true,若所有元素都不满足判断条件,则返回false

let arr= [1, 2, 3, 4, 5]
const isLessThan4 = value => value < 4
const isLessThan6 = value => value > 6
arr.some(isLessThan4 ) //true
arr.some(isLessThan6 ) //false

10.reduce():

此方法是所有元素调用返回函数,返回值为最后结果,传入的值必须是函数类型

let arr = [1, 2, 3, 4, 5]
const add = (a, b) => a + b
let sum = arr.reduce(add)  
 console.log(sum) //sum = 15  相当于累加的效果
//与之相对应的还有一个 Array.reduceRight() 方法,区别是这个是从右向左操作的

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Javascript 相关文章推荐
用jQuery实现一些导航条切换,显示隐藏的实例代码
Jun 08 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
jQuery获取radio选中项的值实例
Jun 18 Javascript
js实现九宫格的随机颜色跳转
Feb 19 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
浅谈vuex 闲置状态重置方案
Jan 04 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
vue 实现特定条件下绑定事件
Nov 09 Javascript
详解JS ES6编码规范
May 07 Javascript
ant design charts 获取后端接口数据展示
May 25 Javascript
详解Vue slot插槽
Nov 20 #Vue.js
详解Vue router路由
Nov 20 #Vue.js
Ajax异步刷新功能及简单案例
Nov 20 #Javascript
关于JavaScript轮播图的实现
Nov 20 #Javascript
JavaScript的function函数详细介绍
JavaScript文档对象模型DOM
Nov 20 #Javascript
四十九个javascript小知识实用技巧
Nov 20 #Javascript
You might like
深入密码加salt原理的分析
2013/06/06 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
php计算整个目录大小的方法
2015/06/19 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python简单实现旋转图片的方法
2015/05/30 Python
python3实现随机数
2018/06/25 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python实现五子棋小程序
2019/06/18 Python
Python调用Windows命令打印文件
2020/02/07 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
银行职员个人的工作自我评价
2014/02/15 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
二年级语文上册复习计划
2015/01/19 职场文书