javascript数组详解
1.数组的一些方法:
<script type="text/javascript">
//var arr = [1,2,3,4]; //性能略高
var arr = new Array(1,2,3,4,5,6,7,8,15);//性能略低,没什么区别
arr.push(9);//添加到尾部
arr.pop();//删除尾部,一次删除一个
arr.shift();//从头部删除一个
arr.unshift();//从头部添加一个
//splice 先删除一段,再添加一段元素splice(开始,长度) ,,替换;
arr.splice(2, 3);
arr.splice(2, 0, 'a','b','c');//删除0个元素,再添加abc //alert(arr);
//alert(arr.join('-'));//合并数组,变成字符串
arr.slice(1,3);//slice(开始, 结束),不包括结束位置,取子数组
var arr1 = ['23', '33','1','2','12'];
//arr1.sort();//排序,默认情况下,把所有的东西都当作字符串处理
arr1.sort(function(num1,num2){
return num1 - num2; //按大小排序
/* if(num1 < num2){
return -1; //第一个比第二个小/靠左
}else if(num1 > num2){
return 1; //右
}else{
return 0; //一样
} */
});
//alert(arr1); var str = 'abc';//String
var str2 = new String('abc');//包装类 var arr2 = ['张三', '失传','王五','李梅','六位','啊'];
arr2.sort(function (str1, str2){
return str1.localeCompare(str2);//按拼音顺序排序
});
//alert(arr2);
//alert(arr2.reverse()); var str3 = 'wxy';
var str4 = 'digua';
//alert(str3+str4);
//alert(str3.concat(str4));//链接,数组链接 var arr4 = [1,2,3,4,5];
//alert(arr4.toString());
//alert(arr4);//跟上面一样
arr4.toString = function(){
return 'abc';
}
function show (){
alert('a');
}
show.toString = function(){
return '就不让你看';
};
//alert(show);
var mu = 255;
//alert(mu.toString(16)); //数组常用方法
//1.数组去重
//2.数组复制
/*数组去重
function hasContain(arra, num){
var i=0; for(i=0;i<arra.length;i++)
{
if(arra[i]==num)
{
return true;
}
} return false;
} var arra=[1,2,3,4,1,5,6,4,8];
var aResult=[];
var i=0; for(i=0;i<arra.length;i++)
{
if(!hasContain(aResult, arra[i]))
{
aResult.push(arra[i]);
}
} alert(aResult);
*/ var arrc = [1,2,4,6]; //var arrb = arrc.concat();
var arrb = arrc;
arrb.push(5);
alert(arrc);
</script>
迭代方法:
every():对数组中的每一项运行给定函数,每一项返回true,则返回true
some():对数组中的每一项给定运行函数,对任一项返回true,则返回true
filter():对数组中的每一项给定运行函数,返回该函数会返回true的项构成的数组
map():对数组中的每一项给定运行函数,返回每次函数调用的结果组成的数组
forEach():对数组中的每一项给定运行函数,这个方法没有返回值
以上方法都不会修改数组中的包含的值
eg:
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult1 = numbers.every(function(item,index,array){
return (item>2);
});
// alert(everyResult1); //false var everyResult2 = numbers.some(function(item,index,array){
return (item>2);
});
// alert(everyResult2); //true var everyResult3 = numbers.filter(function(item,index,array){
return (item>2);
});
// alert(everyResult3); //3,4,5,4,3 var everyResult4 = numbers.map(function(item,index,array){
return item*2;
});
// alert(everyResult4); //2,4,6,8,10,8,6,4,2
归并方法:
reduce():迭代数组的所有项,然后构建一个最终的返回组,reduce()从数组的第一项开始,逐个遍历到最后一项
reduceRight():迭代数组的所有项,然后构建一个最终的返回组,reduceRight()从数组的最后一项开始,逐个遍历到第一项
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传递给reduce()和reduceRight()的函数接收4个参数值:前一个值、当前值、项的索引和数值对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
eg:
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur;
});
alert(sum); //
//第一次执行回调函数,prev是1,cur是2.第二次,prev是3(1加2的结果),cur是3(数组的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。 var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev,cur,index,array){
return prev + cur;
});
alert(sum); //
//第一次执行回调函数,prev是5,cur是4。最终结果相同
javascript数组详解的更多相关文章
- JavaScript 数组详解
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...
- JavaScript 数组详解(转)
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...
- JavaScript数组详解-全网最全
定义数组的方式 定义数组的方式有多种,分别如下 let array=[] (字面量) let array=new Array() let array=new Array([length]) lengt ...
- javascript数组详解(js数组深度解析)【forEach(),every(),map(),filter(),reduce()】
Array 对象是一个复合类型,用于在单个的变量中存储多个值,每个值类型可以不同. 创建数组对象的方法: new Array(); new Array(size); new Array(element ...
- JavaScript进阶(十)Array 数组详解
JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- JavaScript事件详解-zepto的事件实现
zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...
- javascript 函数详解2 -- arguments
今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascrip ...
随机推荐
- 【转】edittext设置点击链接
I put some ClickableSpan in EditText, unfortunately, that spans are still not clickable. When I clic ...
- [原创] zabbix学习之旅七:如何远程操作被监控机器
虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让z ...
- C#WinForm中在dataGridView中添加中文表头
第一步: 注意事项:(1)如果使用数据库,那么第三步的名称可以是任意的,但是不能和数据库中的列名一样,否则会报错: (2)第四步的页眉文本就是你想用的中文列名,自己定: (3)第六步尤其重要,不 ...
- 如何在Eclipse中配置Tomcat服务器
之前使用MyEclipse来开发Web应用,可以在MyEclipse中配置服务器,配置完后,直接运行服务器即可,很方便. 最近切换到Eclipse开发环境,发现使用Tomcat的方式不太一样,因此在此 ...
- Spring+Mybatis+Maven 整合配置
<?xml version="1.0" encoding="UTF-8"?> <beans default-autowire="by ...
- javascript数学计算
◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数:◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数:◎Math.round()执行标准舍入,即它总 ...
- 关闭VS时, 每次都 会弹出 保存以下各项的更改吗?
如果是添加项目, 或修改了解决方案的配置, 会弹出这个是正常的. 如果在没有修改的情况下还这样就是有问题的. 原因: 在Vs中安装了PowerDesigner插件, 并在VS中点了该插件的东西 ...
- C#委托及事件
转载:http://www.cnblogs.com/warensoft/archive/2010/03/19/1689806.html C#委托及事件 在C#中,委托(delegate)是一种引用类型 ...
- 李洪强漫谈iOS开发[C语言-010] - C语言简要复习
// // main.m // 05 - 简要复习 // // Created by vic fan on 16/7/13. // Copyright © 2016年 李洪强. All rig ...
- 《HTTP权威指南》笔记
http://blog.csdn.net/sunorry?viewmode=contents有些笔记 MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔:te ...