栈方法

push方法和pop方法, 可以使数组的行为类似于栈, 先进后出, 并且推入和弹出操作只发生在一端.
push方法
push方法可以接收一个或多个参数, 把它们追加到数组末尾, 并返回修改后数组的长度.
var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.push('f');
console.info('temp: ' + temp); // temp: 6
console.info(arr); // ["a", "b", "c", "d", "e", "f"]
temp = arr.push('g', 'h');
console.info('temp: ' + temp); // temp: 8
console.info(arr); // ["a", "b", "c", "d", "e", "f", "g", "h"]
合并两个数组
我们可以通过Array.prototype.push.apply()来合并两个数组, 示例如下:
var arr1 = ['a', 'b', 'c'], arr2 = ['x', 'y', 'z']; var temp = Array.prototype.push.apply(arr1, arr2); console.info(arr1); // ["a", "b", "c", "x", "y", "z"] console.info(arr2); // ["x", "y", "z"] console.info(temp); // 6
pop方法
pop方法是将数组的最后一项移除, 将数组长度减1, 并返回移除的项.
var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.pop();
console.info('temp: ' + temp); // temp: e
console.info('length: ' + arr.length); // length: 4
如果在一个空数组上使用pop方法, 则返回undefined
队列方法
队列的访问规则是先进先出, 并且队尾添加项, 队头移除项. push方法和shift方法结合使用, 就可以像操作队列一样操作数组.
shift方法
shift方法将移除数组的第一项, 将数组长度减1, 并返回移除的项.
var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.shift();
console.info('temp: ' + temp); // temp: a
console.info('length: ' + arr.length); // length: 4
unshift方法
相反地, 还有一个unshift方法, 它的用途与shift方法相反
unshift也可以在接收一个或多个参数, 把它们依次添加到数组的前端, 并返回修改后数组的长度.
var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.unshift('x', 'y', 'z');
console.info('temp: ' + temp); // temp: 8
console.info(arr); // ["x", "y", "z", "a", "b", "c", "d", "e"]
重排序方法
sort方法和reverse方法
sort方法和reverse方法是可以直接用来重排序的两个方法.
其中, reverse方法是用来反转数组的.
var arr = [1, 3, 2, 5, 4]; arr.reverse(); console.info(arr); // [4, 5, 2, 3, 1]
关于sort方法, 默认情况下, 它是对数组的每一项进行升序排列, 即最小的值在前面. 但sort方法会调用toString方法将每一项转成字符串进行比较(字符串通过Unicode位点进行排序), 那么这种比较方案在多数情况下并不是最佳方案. 例如:
var arr = [1, 3, 2, 5, 4]; arr.sort(); console.info(arr); // [1, 2, 3, 4, 5] arr = [1, 5, 10, 20, 25, 30]; arr.sort(); console.info(arr); // [1, 10, 20, 25, 30, 5]
因此, sort方法可以接收一个比较函数作为参数, 由我们来决定排序的规则. 比较函数接收两个参数, 如果第一个参数小于第二个参数(即第一个参数应在第二个参数之前)则返回一个负数, 如果两个参数相等则返回0, 如果第一个参数大于第二个参数则返回一个正数, 例如:
var arr = [1, 5, 10, 20, 25, 30];
arr.sort(function(value1, value2){
if(value1 < value2) {
return -1;
} else if(value1 > value2) {
return 1;
} else {
return 0;
}
});
console.info(arr); // [1, 5, 10, 20, 25, 30]
操作方法
concat方法
concat方法可以将多个数组合并成一个新的数组. concat可以接收的参数可以是数组, 也可以是非数组值.
var arr1 = ['a', 'b', 'c'],
arr2 = ['x', 'y', 'z'],
val = 'hello';
var temp = arr1.concat(val, arr2);
console.info('arr1: ' + arr1); // arr1: a,b,c
console.info('arr2: ' + arr2); // arr2: x,y,z
console.info('val: ' + val); // val: hello
console.info('temp: ' + temp); // temp: a,b,c,hello,x,y,z
concat方法并不操作原数组, 而是新创建一个数组, 然后将调用它的对象中的每一项以及参数中的每一项或非数组参数依次放入新数组中, 并且返回这个新数组.
concat方法并不操作调用它的数组本身, 也不操作各参数数组, 而是将它们的每个元素拷贝一份放到新创建的数组中. 而拷贝的过程, 对于对象类型来说, 是将对象引用复制一份放到新数组中, 而对于基本类型来说, 是将其值放到新数组中.
slice方法
slice方法可以基于源数组中的部分元素, 对其进行浅拷贝, 返回包括从开始到结束(不包括结束位置)位置的元素的新数组.
var arr = ['a', 'b', 'c', 'd', 'e']; var temp1 = arr.slice(), temp2 = arr.slice(1), temp3 = arr.slice(1, 2); console.info(arr); // ["a", "b", "c", "d", "e"] console.info(temp1); // ["a", "b", "c", "d", "e"] console.info(temp2); // ["b", "c", "d", "e"] console.info(temp3); // ["b"]
从示例中可以看出:
参数如果为负数, 表示从数组最后面的元素可以算起.
slice方法同样不操作调用它的数组本身, 而是将原数组的每个元素拷贝一份放到新创建的数组中. 而拷贝的过程, 也于concat方法相同.
splice方法
splice方法可以用途删除或修改数组元素. 它有如下几种用法:
删除:
当给splice方法中传入一个或两个参数时, 就可以从数组中删除任意元素.
传入一个参数: 要删除的的第一个元素的位置, 此时将会删除从要删除的第一个元素的位置起, 后面的所有元素.
传入两个参数: 要删除的第一个元素的位置和要删除的项数,
返回值均为删除的元素组成的数组, 例如:
var arr = ['a', 'b', 'c', 'd', 'e']; var temp = arr.splice(2); console.info(arr); // ["a", "b"] console.info(temp); // ["c", "d", "e"] arr = ['a', 'b', 'c', 'd', 'e']; temp = arr.splice(2, 2); console.info(arr); // ["a", "b", "e"] console.info(temp); // ["c", "d"]
插入:
使用splice方法可以向数组的指定位置插入任务数量的元素, 此时需要提供三个参数: 起始位置(要插入的位置), 0(表示要删除的项数, 0为不删除), 要插入的元素, 如果要插入多个元素可以添加更多的参数, 例如:
var arr = ['a', 'b', 'c', 'd', 'e']; var temp = arr.splice(2, 0, 'x', 'y', 'z'); console.info(arr); // ["a", "b", "x", "y", "z", "c", "d", "e"] console.info(temp); // [], 并没有删除元素
替换:
当splice接收三个参数, 且第二个参数不为0时, 可达到在数组中替换元素的效果. 例如:
var arr = ['a', 'b', 'c', 'd', 'e']; var temp = arr.splice(2, 2, 'x', 'y', 'z'); console.info(arr); // ["a", "b", "x", "y", "z", "e"] console.info(temp); // ["c", "d"]
此示例表示, 从arr数组的位置为2的元素起, 删除2个元素, 并在位置2添加三个元素.
如果移除的元素个数不等于添加的元素个数, 那么数组的长度将发生变化.
另外,
从ECMAScript5开始, 还提供了数组的迭代方法, 归并方法等, 这些方法将在后面做出补充.
# 原生Array
# js array数组对象操作方法汇总
# php curl获取到json对象并转成数组array的方法
# 详谈js中数组(array)和对象(object)的区别
# javascript中数组(Array)对象和字符串(String)对象的常用方法总结
# JavaScript定义数组的三种方法(new Array()
# new Array(''x''
# ''y'')
# JS array数组检测方式解析
# 第一个
# 组中
# 移除
# 多个
# 第二个
# 每一项
# 到新
# 就可以
# 情况下
# 升序
# 也不
# 将会
# 将在
# 均为
# 并在
# 将其
# 它是
# 我们可以
# 对其
# 弹出
相关文章:
如何通过山东自助建站平台快速注册域名?
孙琪峥织梦建站教程如何优化数据库安全?
如何在万网开始建站?分步指南解析
如何通过可视化优化提升建站效果?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
存储型VPS适合搭建中小型网站吗?
模具网站制作流程,如何找模具客户?
魔方云NAT建站如何实现端口转发?
,想在网上投简历,哪几个网站比较好?
如何快速生成橙子建站落地页链接?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何快速生成高效建站系统源代码?
广平建站公司哪家专业可靠?如何选择?
郑州企业网站制作公司,郑州招聘网站有哪些?
建站主机是什么?如何选择适合的建站主机?
小建面朝正北,A点实际方位是否存在偏差?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何快速搭建高效香港服务器网站?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
制作企业网站建设方案,怎样建设一个公司网站?
建站主机选哪家性价比最高?
深圳网站制作培训,深圳哪些招聘网站比较好?
宁波免费建站如何选择可靠模板与平台?
如何在橙子建站上传落地页?操作指南详解
如何通过虚拟主机空间快速建站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
如何在Golang中使用replace替换模块_指定本地或远程路径
建站主机如何安装配置?新手必看操作指南
网站制作网站,深圳做网站哪家比较好?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
红河网站制作公司,红河事业单位身份证如何上传?
定制建站策划方案_专业建站与网站建设方案一站式指南
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
一键网站制作软件,义乌购一件代发流程?
太平洋网站制作公司,网络用语太平洋是什么意思?
如何在云主机上快速搭建网站?
如何解决VPS建站LNMP环境配置常见问题?
建站之星备案流程有哪些注意事项?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
C++如何使用std::optional?(处理可选值)
电商网站制作价格怎么算,网上拍卖流程以及规则?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
,网站推广常用方法?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何在IIS中新建站点并配置端口与物理路径?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
*请认真填写需求信息,我们会在24小时内与您取得联系。