详解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 简单导航实现代码
Sep 11 Javascript
一个js写的日历(代码部分网摘)
Sep 20 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
jquery实现手风琴效果实例代码
Nov 15 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
Apr 14 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
node.js的事件机制
Feb 08 Javascript
vue 组件高级用法实例详解
Apr 11 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 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
PHP中显示格式化的用户输入
2006/10/09 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
python学生管理系统开发
2019/01/30 Python
Python File(文件) 方法整理
2019/02/18 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
中国好声音广告词
2014/03/18 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
2014年手术室工作总结
2014/11/26 职场文书
劳模事迹材料范文
2014/12/24 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
关于Python使用turtle库画任意图的问题
2022/04/01 Python