今天闲的没事,看了一些关于数组的操作,好久木有用过,很多都已经忘记的差不多了,所以今天花了一个小时写了一些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. Mysql-外键foreign key

    1.定义:如果一张表中有一个字段指向另一张表的主键,就子表中将该主键字段叫做外键. 一张表中可存在多个外键 2.外键的作用 保持数据的一致性.完整性 a.对子表(外键所在的表)的作用:子表在进行写操作 ...

  2. Convolutional Neural Networks卷积神经网络(二)

    转自http://blog.csdn.net/zouxy09/article/details/8781543 CNNs是第一个真正成功训练多层网络结构的学习算法.它利用空间关系减少需要学习的参数数目以 ...

  3. 环形buffer缓冲区

    #include <stdio.h> #include <string.h> #include <malloc.h> struct CircleBuf { char ...

  4. mysql中while循环以及变量声明以及dilimiter

    首先我们查看一个正确的完整的一个存储过程 ①其中delimiter命令解释如下:默认情况下,delimiter是分号:.在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令 ...

  5. c++11 可变参数模板函数

    c++11 可变参数模板函数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #in ...

  6. 【刷题】BZOJ 1901 Zju2112 Dynamic Rankings

    Description 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[j]中第k小的数是 ...

  7. BZOJ2878 [Noi2012]迷失游乐园 【基环树 + 树形dp + 期望dp】

    题目链接 BZOJ2878 题解 除了实现起来比较长,思维难度还是挺小的 观察数据范围发现环长不超过\(20\),而我们去掉环上任何一个点就可以形成森林 于是乎我们枚举断掉的点,然后只需求出剩余每个点 ...

  8. 关于Powershell对抗安全软件(转)

    Windows PowerShell的强大,并且内置,在渗透过程中,也让渗透变得更加有趣.而安全软件的对抗查杀也逐渐开始针对powershell的一切行为.在https://technet.micro ...

  9. logstash5生成init脚本后台启动

    默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底.官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑, ...

  10. docker attach 和 docker exec

    docker attach docker attach -- Attach to a running container. 常用选项: --sig-proxy=true:Proxy all recei ...