javascript-数组的常用方法
除了第二点的方法以外,所有方法都不会改变数组本身
查了一下ECMAScript给数组这个对象已经原生地封装了许多很有用的方法,所以接下来我想在这里总结一下一些常用的数组内置方法:
1、join
var colors = ["red","blue","green"];
colors.join("$$");
colors.toString(); //"red$$blue$$green"
join()用于改变数组的分割。
2、修改数组内部数据的方法
//*
//*插入方法
//* //push方法
var colors = ["red"];
colors.push("blue","green"); //
colors.toString(); //"red,blue,green" //unshift方法
var colors = ["red"];
colors.unshift("blue","green"); //
colors.toString(); //"blue,green,red" //*
//*删除(退出)数组项方法
//* //pop方法
var colors = ["red","blue","green"];
colors.pop(); //"green" //shift方法
var colors = ["red","blue","green"];
colors.shift(); //"red" //*
//*功能最强的方法——splice(索引位置,要删除的个数,要插入的若干项数据)
//* //作为删除用途
var colors = ["red","blue","green"];
colors.splice(1,1); //["blue"]
colors.toString() //"red,green" //作为替换用途
var colors = ["red","blue","green"];
colors.splice(1,2,"white","black"); //["blue", "green"]
colors.toString(); //"red,white,black" //作为插入用途
var colors = ["red","blue","green"];
colors.splice(1,0,"white","black"); //[]
colors.toString(); //"red,white,black,blue,green" //排序,也会改变本数组
values = [2, 4, 6, 8, 10];
values.sort((a,b)=>{return b-a})
push()方法是从数组最后插入数组项,而unshift()则是从数组的最前插入数组项,注意插入的数组项在该数组的顺序保持与参数时候一致。
pop()方法是从数组最后“弹出”数组项,而unshift()则是从数组的最前“弹出”数组项。
而splice方法可以实现插入、删除、替换这3种功能:splice(索引位置,要删除的个数,要插入的若干项数据)
3、迭代方法
var numbers = [1,2,3,4,5,4,3,2,1]; //*
//*判断数组每一项
//* //every只有每一项都返回true,整个才会返回true
numbers.every(function(item,index,array){return item>2}) //false //some只要有一项返回true,整个就会返回true
numbers.some(function(item,index,array){return item>2}) //true //*
//*filter过滤器,返回一个由符合的项组成的数组
//*
numbers.filter(function(item,index,array){return item>2}) //[3, 4, 5, 4, 3] //*
//*逐项执行的迭代
//* //map有返回结果,我们叫它映射
numbers.map(function(item,index,array){return item*2}) //[2, 4, 6, 8, 10, 8, 6, 4, 2] //forEach没有返回结果
numbers.forEach(function(item,index,array){array[index] = item*2}) ;
alert(numbers); //[2, 4, 6, 8, 10, 8, 6, 4, 2]
大家可以根据不同的需求来调用js提供的原生的迭代方法!!
4、归并方法
reduce(callback[,initalValue]) 第二个参数是自定义初始值(就是第一次循环的pre)
最后是归并方法reduce()和reduceRight(),两者都会迭代数组所有项,其中reduce()从第一项开始,而reduceRight()从数组最后一项开始,出此之外两个函数完全相同
//reduce()中pre第一次为数组第一项,第二次开始为第一次函数返回值为pre
var values = [1,2,3,4,5];
var sum=values.reduce(function(pre,cur,index,array){return pre + cur});
alert(sum); // //reduceRight()中pre第一次为数组最后一项,第二次开始为第一次函数返回值为pre
var values = [1,2,3,4,5];
var sum=values.reduceRight(function(pre,cur,index,array){return pre + cur});
alert(sum); //
其实forEach()也完全可以实现,并且比以上两个归并方法更好理解,怎样实现这功能也看个人习惯。
ps:reduce除了用作求和,还可以用作递归寻找
例如说,有一个非常复杂的对象如果我们有一个path数组,存着一个路径,我们就可以用reduce来找到这个路径的“终点节点”:
path.reduce((obj,pathString=>obj[pathString],庞大的对象)
5、slice
slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变
数组的 slice (非常类似于字符串的 slice。根据规范,slice 需要两个参数,起点和终点。它会返回一个包含了从起点开始,到终点之前之间所有元素的新数组。
理解 slice 的功能并不是太难:
'abc'.slice(1,2) // "b"
[14, 3, 77].slice(1, 2) // [3]
6、concat
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var mya = new Array(3);
mya[0] = "1";
mya[1] = "2";
mya[2] = "3";
document.write(mya.concat(4,5)+"");//1,2,3,4,5
document.write(mya); //1,2,3
7.from(es6新增的)
从一个类似数组或可迭代对象中创建一个新的数组实例。
Array.from('foo'); // ["f", "o", "o"]
Array.from(["a", "b", "c"]); // ["a", "b", "c"]
//特殊的可以从{length:num}返回一个长度为num的数组
Array.from({length:5}); //[undefined,undefined,undefined,undefined,undefined]
//第二个参数是map函数
Array.from({length:5},(v, i) => i); // [0,1,2,3,4]
8.delete
用于删除对象的某个属性,因此可以删除数组的某一项,或者对象的某一个属性。成功返回true,失败返回false
var a = [1,2,3];
delete a[1]; //true
a; //(3) [1, empty × 1, 3] var b = {name:'rick',age:21};
delete b.age; //true
b; //{name: "rick"}
javascript-数组的常用方法的更多相关文章
- JavaScript数组对象常用方法
JavaScript数组对象常用方法 方法 形式 返回值 是否改变原数组 描述 concat -items: ConcatArray[] 追加之后的数组 否 连接两个或更多的数组,并返回结果.注意 c ...
- javascript 数组的常用方法总结
前言 主要讨论一下数组的方法, 1.splice和slice的区别 2.pop和push 3.shift和unshift 4.join 5.forEach(es ...
- javascript数组的常用方法总结
http://jingyan.baidu.com/album/86fae346bce16d3c49121af9.html?picindex=1 1. concat()方法 数组和数组的 粘结: var ...
- JavaScript数组操作常用方法
@ 目录 数组基础遍历方法. for for of for in 数组的基础操作方法. push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splic ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- 关于javascript数组的定义与其一些常用方法总结
由于JavaScript是一门宽松的语言,这种宽松可能会带来更加麻烦的事情.比如JavaScript的数组,定义与使用的方式太灵活有时候让人迷惑.下面将JavaScript中关于数组常用的方法.定义之 ...
- JavaScript数组方法速查,32个数组的常用方法和属性
JavaScript数组方法速查手册极简版 http://30ke.cn/doc/js-array-method JavaScript数组方法速查手册极简版中共收了32个数组的常用方法和属性,并根据方 ...
- JavaScript 数组 常用方法(二)
写在前面:续接上篇 JavaScript 数组 常用方法 数组常用方法第二弹来了: some && every 描述: every()与some()方法都是JS中数组的迭代方法. so ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
随机推荐
- Struts框架之 执行流程 struts.xml 配置详细
1.执行流程 服务器启动: 1. 加载项目web.xml 2. 创建Struts核心过滤器对象, 执行filter → init() struts-default.xml, 核心功能的初 ...
- HDU 1051 Wooden Sticks 贪心||DP
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- jsp实现上一页下一页翻页功能
前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需 ...
- HDU 1864 最大报销额(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目: 最大报销额 Time Limit: 1000/1000 MS (Java/Others) ...
- tomcat支持php
最近做项目遇到了问题,服务器是用的tomcat,而有用到php,就想在tomcat下面可以运行php,步骤如下: 1.下载php压缩包解压或者用wamp/xampp 我下载的是wamp,用的里面的ph ...
- 使用curl模拟ip和来源进行网站采集的实现方法
对于限制了ip和来源的网站,使用正常的采集方式是不行的.本文将介绍一种方法,使用php的curl类实现模拟ip和来源,实现采集限制ip和来源的网站. 1.设置页面限制ip和来源访问 server.ph ...
- Oozie时出现Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0?
不多说,直接上干货! 问题详情 [hadoop@bigdatamaster oozie--cdh5.5.4]$ bin/ooziedb.sh create -sqlfile oozie.sql -ru ...
- FreeRTOS——队列管理
1. 队列主要用于任务与任务.中断与任务之间的消息传递. 2. 创建队列时,请注意队列中数据单元的长度. 3. 通常情况,队列被作为FIFO(先进先出)使用,即数据从队列尾写入,从队列首读.当然,数据 ...
- nyoj_253:LK的旅行(旋转卡壳入门)
题目链接 求平面最大点对. 找凸包 -> 根据凸包运用旋转卡壳算法求最大点对(套用kuang巨模板) 关于旋转卡壳算法 #include<bits/stdc++.h> using n ...
- jenkins+ANT+jmeter 接口测试环境搭建
目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...