Js数组的常用的方法概述
学习JS的同学们,也曾对数组进行学习掌握,所以我也把数组中常用的方法列举下来,相互学习
不多废话,直接上正文 。 快乐的分割线。。。
一、对象继承的方法
数组是一种特殊的对象,继承了对象Object的toString()、toLocaleString()和valueOf()方法
1.toString()
toString方法返回由数组中每个值的字符串形式拼接而成的一个以符号分割的字符串于不使用参数的join()返回的字符串相同
[1,2,3].toString()//'1,2,3'
['a','b','c'].toString()//'a,b,c'
[1,[2,3]].toString()//'1,2,3'
2.toLocaleString()
toLocaleString()是toString()的本地化版本,在常态下,和toString()返回一样,在数字到达3位数以上,为自动格式化、还可以格式化日期
var a = 3333; a.toLocaleString()//3,333
var b = new Date; b.toLocaleString()//2018/7/13 下午3:43:39
3.valueOf()
valueOf()在对于数组对象的时候返回本身
var a = [1,2,3]; a.valueOf()//[1,2,3];
a.valueOf() instanceOf() Array//true
二、数组转换法
1.join()
Array.join()是Array.split()的逆向操作,前者是将数组以参数单位(默认为逗号)合并成一个字符串,后者是把字符串切割成数组。支持数组与类数组,不支持对象
var a = [1,2,3,4,5]; a.join()//'1,2,3,4,5'
var b = [1,undefined,2,null,3]; b.join()//'1,,2,,3'
var c = Array.prototype; c.join.call('hello','-')//'h-e-l-l-o'
var d = {1:'a',2:'b',length:3}; d.join()//'a,b'
var e = {1:'a',2:'b'}; e.join()//''
三、数组数据结构操作方法
数组的数据结构分为栈结构(后进后出)和队列结构(先进先出)
栈结构(后进后出):
1.push()
push()是把任意数量的参数逐个添加在末尾,改变原有数组,修改数组长度并返回
var a = [1,2]; a.push('11,22') - a//3 - [1,2,33,44]
var b = [3,4]; a.push([33.44]) - a//2 - [1,2,[33,44]]
Array.prototype.push.apply(a,b)//[1,2,3,4]
Array.prototype.push.call(a,b)//[1,2,[3,4]]
push()也可以往对象中添加参数。添加后对象会变成数组对象,新加入的元素的键对应数组的索引,并且对象有一个length属性
var c = {}; Array.prototype.push.call(c,1)//{0:1,length:1}
2.pop()
pop()把数组中最后一项移除,返回数组长度、然后修改数组长度改变原有数组
var a = [1,2,3]; a.pop() - a//3 - [1,2];
//如果数组本身是空数组,则返回undefined
var b = []; b.pop()//undefined
队列结构(前进前出):
1.shift()
shift()移除数组中第一项,返回移除的元素,然后修改数组长度改变数组
var a = [1,2,3]; a.shift() - a//1 - [2,3];
2.unshift()
unshift()在数组的起始位置添加任意参数修改数组长度,返回数组长度改变数组
var a = [1,2,3]; a.unshift(4,5) - a//5 - [1,2,3,4,5]
四、数组排序方法
1.reverse()
reverse()用于反转数组的顺序,修改原数组,并返回当前数组
var a = [1,2,4,3,5]; a.reverse()// [5,3,4,2,1];
2.sort()
sort()默认情况下是改变数组为升序排序,sort会默认的调用每个数组项toString()
var a = [1,2,3,4,5]; a.sort() //[1,2,3,4,5]
var b = [1,2,12,13]; c.sort() //[1,12,13,2]
var c = [1,2,'1a','2b']; c.sort() //[1,'1a',2,'2b'];
如果数组中含有undefined,则undefined会排到尾部
var d = [1,3,undefined,2]; d.sort() //[1,2,3,undefined]
如果sort有参数的时候(参数必须是一个函数);如果函数return的值是正数或者第一个参数减去第二个参数,则为正序,否则为反序。如果存在字符串,则会为最小。按照顺序放到起始位置
function sortNumber(a,b){
return b-a
}
var e = [1,2,3]; e.sort(sortNumber)//[3,2,1];
var f = ['1a',1,'2b',2,3]; f.sort()//['1a','2b',3,2,1];
如果sort参数是函数返回的是一个随机正负数,则会随机数组书序
function sortRandom(a,b){
return Math.random()-0.5
}
var g = [1,2,3,4,5]; g.sort(sortRandom)//[2,1,5,4,3](此为随机顺序)
3.concat()
concat()方法是基于当前数组创建一个新数组然后把接收的参数放到末尾,不影响原数组
var a = [1,2]; b = [3,4]; a.concat - a//[1,2,3,4] - [1,2];五.创建子数组方法
1.slice()
slice()方法截取参数第一位起始位置,和第二位终止位数。并创建一个新的数组。如果没有参数,那就是全部截取
var a = [1,2,3,4,5];a.slice(2,4)//[3,4,5]
var a = [1,2,3,4,5];a.slice(2)//[3,4,5]
var a = [1,2,3,4,5];a.slice(-3)//[3,4,5]
var a = [3,4,5];a.slice()//[3,4,5]
六.数组删改方法
1.splice()
splice()接收三个参数,第一个参数是位置必填的,第二个参数是要删除的数量必填,如果只有一个参数,则全部删除数组、第二个参数以后都是是新增项目选填。返回的是被删除的数组
var a = [1,2,3]; a.splice(2,0,1)-a//[]-[1,2,1,3];
var b = [1,2,3]; a.splice(2,1,1)-a//[3]-[1,2,1];
var c = [1,2,3]; a.splice(2)-a//[1,2,3]-[]
var d = [1,2,3]; a.splice(2,1,4,5)-a//[3]-[1,2,4,5]
2.indexOf()
indexOf()返回是第一个参数首次出现的位置,当有第二个参数n的出现的时候,返回的是,从第n个元素之前的元素不计算是否首次出现
var a = ['a','b','c',a,2,3]; a.indexOf('a')//
var a = ['a','b','c',a,2,3]; a.indexOf('a',1)//
var a = ['a','b','c',1,2,3]; a.indexOf('a',-5)//
3.lastIndexOf()
lastIndexOf()于indexOf()不同的就是:从右往左查
var a = ['a','b','c',a,2,3]; a.indexOf('a')//
var a = ['a','b','c',a,2,3]; a.indexOf('a',1)//
var a = ['a','b','c',a,2,3]; a.indexOf('a',-1)//
七.数组归并的方法
1.reduce()
reduce()方法第一个参数是将指定的函数数组进行循环遍历以自定义的形式组合,生成单个值。参数接收四个(初始变量,当前变量,当前索引,原数组对象),reduce的第二个参数是指定一个参入的初始值。
var a = [1,2,3,4,5];
a.reduce(function(x,y){return x+y}) //
a.reduce(function(x,y){return x+y},3)//
2.reduceRight()
reduceRight()于reduce()不同在于索引值由高到低的
a.reduce(function(x,y){console.log(x,y);return x+y},0)
// 5,4 9,3 12,2 14,1 15,0
八.数组迭代方法
1.map()
map()给函数数组的每一项运行指定的的函数,并返回每次函数调用的结果组成数组
var a = [1,2,3]; a.map(function(item,index,arr){return item*2})
//[2,4,6]
var b = ['aa','bb','cc'];
a.map(function(item,index,b){return this[item]})
//['aa','bb','cc'];
map()日常中多用于去解析对象中的属性
var c = {[name:1,value:2],[name:11,value:22]}
c.map(function(item){return item.name})//[1,11]
2.forEach()
forEach()给函数数组的每一项运行指定的函数(于map()对比不同于没有返回值)。forEach()可接受第二参数,用来改变this的指向。
var a = {
name:'111',
arr:[1,2,3],
value:function(){
console.log(this);
this.arr.forEach(function(){
console.log(this);
})
}
}//循环外this指向value方法,循环内指向a对象
var b = {
name:'111',
arr:[1,2,3],
value:function(){
console.log(this);
this.arr.forEach(function(){
console.log(this);
},this)
}
}//全文的this全部都指向对象a
3.filter()
filter()给函数数组的每一项运行指定的函数,并返回制定规则返回True的项的数组。该方法多用于查询,第二个参数值指定this指向
var a = [1,2,3];a.filter(function(item){return item>1)//[2,3];
4.some()
filter()给函数数组的每一项运行指定的函数进行筛选,如果都返回false,则返回false。反之则返回true
a = [1,2,3,4,5];
a.some(function(item){return item === 3;})//true
a.some(function(item){return item === 6;})//false
5.every()
every()给函数数组的每一项运行指定的函数进行筛选,如果有返回false,则返回false。反之如果全部返回true,则返回true;空数组会返回true
a = [1,2,3,4,5];
a.every(function(item){return item === 3;})//false
a.every(function(item){return item < 6;})//true
终于打完了。不容易。哈哈
自己总结完,也算复习了下。
继续加油把~
Js数组的常用的方法概述的更多相关文章
- js数组及常用数学方法
数组方法 清空数组 1: arr.length=0; 2: arr=[]; arr.push() //往数组最后一个添加元素,会待会一个返回值,就是新的数组长度arr.uns ...
- js数组去重五种方法
今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...
- 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
- js中数组遍历常用的方法
常见的数组遍历方法,比如 for in,for of, forEach,map,filter,every,some,find,reduce等 1,普通for循环,经常用的数组遍历 var arr = ...
- JS数组的常用属性或方法
1.length 数组长度 计算数组的长度 var arr=[1,2,3,4,5]; console.log(arr.length);//输出结果是5 2. push() 添加元素 向数组尾部添加新元 ...
- js 数组去重复的方法
数组去重复是js中常用的方法,归纳了四种如下: 1. for + indexOf 去重复 var arr = [3,5,5,4,1,1,2,3,7,2,5]; var target = []; fo ...
- JS数组添加字典的方法
var ary_RoleType = []; //申明数组变量 for(var j = 0;j<treeData.length;j++){ if($.inArray(treeData[j].v ...
- JS操作字符串常用的方法
JS操作String对象的方法 charAt(index):返回指定索引处的字符串charCodeAt(index):返回指定索引处的字符的Unicode的值concat(str1,str2,...) ...
- 简单谈谈JS数组中的indexOf方法
前言 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用,正则不熟练同学的利器.这篇文章就最近遇到的一个问题,用实例再说说说indexOf方法.本文是小知识点积累,不作为深入 ...
随机推荐
- 使用OpenCV进行标定(转载)
转载自牛猫靖 http://www.cnblogs.com/2008nmj/p/6278076.html 使用OpenCV进行相机标定 1. 使用OpenCV进行标定 相机已经有很长一段历史了.但是 ...
- Rabbitmq -- direct
一.前言 RabbitMQ还支持根据关键字发送,即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange.direct类型的Exchange路由规则也很简单,它会把消息路由到那些bindi ...
- mysql 在linux服务器恢复数据表方法记录
在本地搭建测试环境录入的数据放到线上测试,备份了数据表为一个.sql文件, 在服务器上登录mysql执行 source (如:source exposition_exposition.sql) 文件路 ...
- uva 557 Burger
https://vjudge.net/problem/UVA-557 题意: n个人,n/2个牛肉煲,n/2个鸡肉堡 每次抛硬币,根据正反决定每个人吃什么汉堡 如果某一个汉堡被选完了,就不抛了 问最后 ...
- 树形dp的进阶 (一)
①树的重心的性质的运用 ②缩点以后寻找规律 树的直径! ③树形dp上的公式转换 ④和期望有关的树形dp + 一点排列组合的知识 ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 一:Codeforces Round #364 ...
- Python学习笔记(四十五)网络编程(1)TCP编程
摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320043745 ...
- 用Vue来实现图片上传多种方式
没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景.假设我们要做一个后台系统添加商品的页面,有一些商品名称.信息等字段,还有需要上传商品轮播图的需求. 我们就以Vue.Element ...
- TypeScript在node项目中的实践
TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...
- git服务器的简单搭建
安装git 安装git,参考:https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git 创建git仓库 使用ro ...
- 概述sysfs文件系统【转】
转自:http://blog.csdn.net/npy_lp/article/details/78933292 内核源码:linux-2.6.38.8.tar.bz2 目标平台:ARM体系结构 sys ...