JS中数组那些事~
今天闲的没事,看了一些关于数组的操作,好久木有用过,很多都已经忘记的差不多了,所以今天花了一个小时写了一些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中数组那些事~的更多相关文章
- js中数组去重的几种方法
js中数组去重的几种方法 1.遍历数组,一一比较,比较到相同的就删除后面的 function unique(arr){ ...
- JavaScript -- 时光流逝(二):js中数组的方法
JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...
- php和js中数组的总结
php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...
- JS中数组的介绍
一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...
- js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join
- js中数组如何使用
js中数组如何使用 一.总结 一句话总结:new Array()和[]两种方法都可以创建数组. 二.js中创建数组,并往数组里添加元素 数组的创建 var arrayObj = new Array() ...
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- js中数组去重方法及性能对比
js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...
- js中数组扁平化处理
随机推荐
- 使用FileReader对象的readAsDataURL方法来读取图像文件
使用FileReader对象的readAsDataURL方法来读取图像文件 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项 ...
- Linux 压缩 解压缩 命令相关
1.命令格式:tar[必要参数][选择参数][文件] 2.命令功能:用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的 3.命令参数:必要参数有如下:-A 新增压缩文件到已存在的压缩 ...
- docker weave安装
1.升级内核到3.10.0以上,安装iproute22.安装 0.80版本:#wget -O /usr/local/bin/weave https://raw.githubusercontent.co ...
- java 基础 --静态
1. 静态变量和静态代码块是在JVM加载类的时候执行的(静态变量被赋值,以后再new时不会重新赋值),执行且只执行一次2. 独立于该类的任何对象,不依赖于特定的实例,被类的所有实例(对象)所共享3. ...
- elasticsearch6 学习之安装
安装环境:centos6.5 64位 jdk1.8 elasticsearch6.1.1 一.启动 [root@localhost bin]# ./elasticsearch - ...
- SpringBoot(九)_springboot集成 MyBatis
MyBatis 是一款标准的 ORM 框架,被广泛的应用于各企业开发中.具体细节这里就不在叙述,大家自行查找资料进行学习下. 加载依赖 <dependency> <groupId&g ...
- BAT等公司必问的8道Java经典面试题,你都会了吗?
工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1.“知其然不知其所以然”.做了多年技术,开发了很多业务应用,但似乎并 ...
- Memcache服务器端+Redis服务器端+PHP Memcache扩展+PHP Memcached扩展+PHP Redis扩展+MemAdmin Memcache管理工具+一些概念(更新中)
Memcache和Redis因为操作简单,是我们常用的服务器数据缓存系统,以下文字仅作备忘记录,部份转载至网络. 一.定义 1.Memcache Memcache是一个高性能的分布式的内存对象缓存系统 ...
- 【uoj#228】基础数据结构练习题 线段树+均摊分析
题目描述 给出一个长度为 $n$ 的序列,支持 $m$ 次操作,操作有三种:区间加.区间开根.区间求和. $n,m,a_i\le 100000$ . 题解 线段树+均摊分析 对于原来的两个数 $a$ ...
- BZOJ 3165: [Heoi2013]Segment
3165: [Heoi2013]Segment Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 465 Solved: 187[Submit][Sta ...