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 ...
随机推荐
- HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?
// test02.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- css块级元素、行内元素
说说对html页面元素的排列认识: html中所有元素从上到下排列,所以需要css来对其中的元素进行排序.调节样式,并用js为其添加交互效果. css的排序.定位是相对块级元素而言的,margin/p ...
- [转载]C# ListView用法详解
一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...
- 项目中libevent几个问题
几个问题: .libevent到底用的是select还是iocp,然后是如何突破64限制的 typedef struct fd_set { u_int fd_count; /* how many ar ...
- uva 307
排序之后再剪枝,有点神 #include <cstdio> #include <cstdlib> #include <cmath> #include <map ...
- java代码判断图片文件格式, 不是根据文件后缀来判断。
public static final String TYPE_JPG = "jpg"; public static final String TYPE_GIF = "g ...
- 原 Linux搭建SVN 服务器2
原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55) 阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录 ...
- Python Requests模块讲解4
高级用法 会话对象 请求与响应对象 Prepared Requests SSL证书验证 响应体内容工作流 保持活动状态(持久连接) 流式上传 块编码请求 POST Multiple Multipart ...
- linux上部署应用
1.编写traffic.sh 引入相关的jar包及java环境路径 2.crontab -e 加入: */10 * * * * cd /opt/sys/traffic_version/bin & ...
- Linq查询Count、Sum、Min、Max、Average
原文地址:Linq——Count.Sum.Min.Max.Average作者:mousekitty Linq查询之Count.Sum.Min.Max.Average using System; usi ...