今天闲的没事,看了一些关于数组的操作,好久木有用过,很多都已经忘记的差不多了,所以今天花了一个小时写了一些demo,准备备份一下方便以后使用~~~

  下面是一些工作当中,经常用到的数组的方法,小伙伴可以自行选择自己的喜好~~~

<!DOCTYPE html>
<html>
<head>
<title>array</title>
</head>
<body> </body>
<script type="text/javascript"> var
arr = [1,2,3,4,5],
arr1 = [10,4,5,2,8,99]; /*
A instanceof B
A是不是B造出来的
*/
console.log(arr instanceof Array) //true /*
Array.isArray(a)
变量a是否是数组
*/
console.log(Array.isArray(arr)) //true
console.log(Array.isArray(2)) //false /*
toString()
数组转为字符串,用“ , ”链接;
join也能达到这种效果
*/
console.log(arr.toString()) /*
数组.join('符号')
将数组以符号链接形成字符串
*/
console.log(arr.join('$'))
console.log(arr.join(' ')) /* push 在数组末尾添加
pop 在数组末尾删除
*/
arr.push('paoAfter')
console.log(arr);
arr.pop()
console.log(arr); /* unshift 在数组最前面添加
shift 在数组最前面删除
*/
arr.unshift('paoUnshift')
console.log(arr)
arr.shift()
console.log(arr) /* 数组的排序 */
/*
reverse
数组翻转
*/
console.log(arr.reverse()) /*
sort() ????
数组排序,从小到大
*/
console.log(arr.sort()) //利用回调函数对数组大小进行排序
arr1.sort(function (a,b) {
return a - b;
})
console.log(arr1) /* 数组元素的操作 */
/*
数组1.concat(数组2)
拼接两个数组
*/
console.log(arr.concat(arr1))
//数组去重1:
Array.prototype.arrUnique = function () {
// 先排序
this.sort();
// 定义一个新数组从排序后的数组的第一个开始接收值
var arr = [this[0]];
// 从第二个数值开始比较
for (var i = 1; i < this.length; i++) {
//比较相邻的值不一样时,新数组接收值,达到去重效果
//原数组的第一个与新数组的最后一个相比较
if( this[i] !== arr[arr.length - 1]) {
arr.push(this[i])
}
}
return arr;
} var arrnew = arr.concat(arr1).arrUnique()
console.log(arrnew) // 数组去重2
var r=[],
arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
for(var i=0,len=arr.length;i<len;i++){
//如果新的数组中找不到arr数组中的元素,将数组元素存放在新数组中
if(r.indexOf(arr[i])===-1){
r.push(arr[i]);
}
} /*
slice 数组的截取
数组.slice(开始的索引,结束的索引)
*/
console.log(arr.slice(3)) //从索引值为3截取到最后
console.log(arr.slice(0,3)) //从索引值为1到3截取
console.log(arr.slice(-2)) //负数后几个 /*
数组.splice (开始索引值,删除几个,替换内容1,替换内容2,....)
同slice有点雷同
*/
console.log(arr.splice(3)) //从索引值为3截取到最后
console.log(arr) console.log(arr.splice(0,3)) //从索引为0开始删除3个
console.log(arr) console.log(arr1)
console.log(arr1.splice(1,2,'a','b')) //从索引为1开始删除2个,并用‘a’,‘b’替换删除的内容
console.log(arr1) /*
数组.indexOf(元素) (从左往右)
数组中是否包含元素,如果包含,返回对应的索引;如果不包含,返回-1 数组.lastIndexOf(元素) (从右往左)
*/
console.log(arr1.indexOf(2)) //index:0
console.log(arr1.indexOf(990)) //-1;查不到 console.log(arr1.lastIndexOf(2)) //index:0
console.log(arr1.lastIndexOf(990)) //-1;查不到 /* 数组迭代 */
/*
数组.map(function (item,index,array) { return newArr})
*/
var sporter =[{
name:'aa',
isHell:null
},{
name:'bb',
isHell:null
},{
name:'cc',
isHell:true
}];
var arr2 = [];
sporter.map(function (item,index,array) {
if ( item.isHell ) {
arr2.push(item.name);
}
})
console.log(arr2)
// es6写法
sporter.map( item => {
if ( item.isHell ) {
arr2.push(item.name);
}
})
console.log(arr2) /*
数组.filter(function (item,index,array) { return newArr})
返回符合条件的元素为true的数组
*/
var arr = sporter.filter( item => {return item.isHell});
console.log(arr) var arr = sporter.filter( item => item.isHell);
console.log(arr) console.log('-1' == false) //false // 数组去重3
var
arr3 = [1,2,3,2,3,5,6,6]; var arr = arr3.filter(function(item,index,self) {
console.log(item+'----------------'+self)
return self.indexOf(item) == index;
});
console.log(arr) /*
every()
数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true ; some()
对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true;
*/
var arr = sporter.every(function (item) {
return item.isHell;
})
console.log(arr) var arr = sporter.some(function (item) {
return item.isHell;
})
console.log(arr) /*
forEach()
和for循环一样,没有返回值
*/
var arr = sporter.forEach(function(item) {
item.sex = 'man'
})
console.log(arr) //因为forEach没有返回值,所以是undefined /*
数组.redval(a,b)
这个方法一般用在累计累加上,实用技巧暂时还没发现。比如,数字数组求和,字符串数组连接上
*/
// 数组求和,数组的拼接
var sum=0,arr=[1,2,3,4,5,6];
sum = arr.reduce(function (a,b) {
return a + b;
}) /*
数组.find(val)
方法返回传入一个测试条件(函数)符合条件的数组第一个元素。
*/
var
arr4 = [1,2,3,4];
var a = arr4.find(function(val){
return val > 2;
})
console.log(a) /* 数组.findIndex(val)
findIndex:方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
如果不存在,则返回-1;如果存在满足条件的,返回符合条件的第一个索引;
*/
var a = arr4.findIndex(function(val) {
return val > 4;
})
console.log(a) //-1 /* 数组的清空 */
var arr5 = ['a','b','c',1];
arr5.length = 0; //伪数组无法清空
console.log(arr5) arr5.splice(0); //从索引为0开始截取到最后一个,伪数组无法清空
console.log(arr5); arr5 = []; //推荐使用,伪数组可用 // 伪数组:就是长的像数组,不过没有数组的方法,不能添加删除元素
fn(111,222,333);
function fn() {
arguments.length = 0; //无法清空
console.log(arguments); arguments.splice(0)
console.log(arguments); //报错 arguments = []
console.log(arguments)
} </script>
</html>

好啦,有需要了解的

JS中数组那些事~的更多相关文章

  1. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  2. JavaScript -- 时光流逝(二):js中数组的方法

    JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...

  3. php和js中数组的总结

      php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...

  4. JS中数组的介绍

    一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...

  5. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join

    js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join

  6. js中数组如何使用

    js中数组如何使用 一.总结 一句话总结:new Array()和[]两种方法都可以创建数组. 二.js中创建数组,并往数组里添加元素 数组的创建 var arrayObj = new Array() ...

  7. js中数组方法大全

    js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...

  8. js中数组去重方法及性能对比

    js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...

  9. js中数组扁平化处理

    ‍

随机推荐

  1. isset与empty 的区别

    isset()与empty()函数的区别,isset()只需要验证一个值是否存在: 而empty()不但需验证这个值是否存在,还需检验它的值是否非空和非0: 注:isset()只检验一个变量是否已经设 ...

  2. 使用Fiddler重定向App的网络请求

    前言 开发中手机app只能访问生产环境地址,所以给开发调试带来不便,可以通过Fiddler的代理和urlreplace方式解决. 步骤 1.开启Fiddler的代理模式Tools->Teleri ...

  3. SpringBoot(五)_表单验证

    SpringBoot(五)_表单验证 参数校验在我们日常开发中非常常见,最基本的校验有判断属性是否为空.长度是否符合要求等,在传统的开发模式中需要写一堆的 if else 来处理这些逻辑,很繁琐,效率 ...

  4. Spyder & Python

    Spyder & Python https://pypi.org/project/spyder/ Spyder is a powerful scientific environment wri ...

  5. Tomcat安全配置与性能优化

    Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很 ...

  6. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  7. MT【163】运动是相对的

    如图,在平面直角坐标系中,$P(6,8)$,四边形$ABCD$为矩形,$AB=16$,$AD=9$,点$A,B$分别在射线$OP$和$Ox$上,求$OD$的最大值_______            ...

  8. 文件查找 locate 和 find

    locate locate命令依赖于一个数据库文件,系统默认每天会检索一次系统中的所有文件,然后将检索到的文件记录到数据库中; 在执行查找时,可直接到数据库中查找记录,所以locate比find反馈更 ...

  9. 【DP】【P4539】 [SCOI2006]zh_tree

    Description 张老师根据自己工作的需要,设计了一种特殊的二叉搜索树. 他把这种二叉树起名为zh_tree,对于具有n个结点的zh_tree,其中序遍历恰好为(1,2,3,-,n),其中数字1 ...

  10. GDB调试工具

    1.运行代码的三种情况     a.运行时有逻辑问题     gdb a.out 设置断点 单行执行     b.运行代码没有退出  一直运行 结束不了         挂载调试    跟踪调试 -g ...