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数组详解的更多相关文章

  1. JavaScript 数组详解

    在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...

  2. JavaScript 数组详解(转)

    在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...

  3. JavaScript数组详解-全网最全

    定义数组的方式 定义数组的方式有多种,分别如下 let array=[] (字面量) let array=new Array() let array=new Array([length]) lengt ...

  4. javascript数组详解(js数组深度解析)【forEach(),every(),map(),filter(),reduce()】

    Array 对象是一个复合类型,用于在单个的变量中存储多个值,每个值类型可以不同. 创建数组对象的方法: new Array(); new Array(size); new Array(element ...

  5. JavaScript进阶(十)Array 数组详解

    JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...

  6. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  7. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  8. JavaScript事件详解-zepto的事件实现

    zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...

  9. javascript 函数详解2 -- arguments

    今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascrip ...

随机推荐

  1. mysql存储过程 OUT or INOUT argument 3 for routine

    mysql存储过程出现: OUT or INOUT argument 3 for routine gotask.UserLogin is not a variable or NEW pseudo-va ...

  2. Android PopupWindow 点击消失解决办法

    1.点击PopupWindow 外部区域时,PopupWindow消失 popMenu = new PopupWindow(getApplicationContext()); popMenu.setW ...

  3. 【转载】错误 CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/.........dll”--“拒绝访问。 ”

    win7中安装asp.net的问题 编译器错误信息: CS0016: 未能写入输出文件问题解决办法 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地 ...

  4. 汇编语言中"[]"的用法

    "[]"的用法在"常见问题"已经有所说明,引用如下: 1.push dword ptr [024c1100] 压栈024c1100值的双字 2.cmp eax, ...

  5. VB程序破解之API断点[bp __vbaVarTstEq]

    软件名称:风云足彩1.7软件大小:2.1M下载地址:http://free.ys168.com/?zhinengxuanhao软件保护:注册码编写软件:Microsoft Visual Basic 5 ...

  6. java基础知识回顾之---java String final类 容易混淆的java String常量池内存分析

    /** *   栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放  在常量池中). 堆(heap):存 ...

  7. DJANGO问题--Error: ‘ManyRelatedManager’ object is not iterable

    http://www.itblah.com/django-error-manyrelatedmanager-object-iterable/ Django: Error: ‘ManyRelatedMa ...

  8. hdu 1709 The Balance

    母函数的特殊情况,左右两边都可以放,如样例1,2,9 母函数为(1+x+1/x)*(1+x^2+1/x^2)*(1+x^9+1/x^9) 化简为(1+x+x^2)*(1+x^2+x^4)*(1+x^9 ...

  9. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

  10. css中的:before与:after的简单使用

    直接上代码,不多说了! 画三角形 1). <style type="text/css"> .triangle{ width: 0; height: 0; /*borde ...