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 ...
随机推荐
- nginx + tomcat集群和动静资源分离
开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的a ...
- python 日期转星期
import time import datetime today = int(time.strftime('%w')) print today anyday = datetime.datetime( ...
- Atmel Studio 6.0新建项目
使用Atmel Studio 6.0新建一个项目 连接Atmel 开发板与调试板,开发板使用的芯片是ATXMGEA128A1 注意: 以上对于开发板与调试板的连接,需要非常注意连接时线的方向, ...
- 【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
组合数学+容斥原理 Orz zyf-zyf 多重集组合数0.0还带个数限制? ——> <组合数学>第6章 6.2带重复的组合 组合数还要模P 0.0? ——> Lucas ...
- 解决myeclipse每次启动注册码过期输入注册码
每次都需要重新输入一个新的注册码,搞的很不愉快,后来发现原来是因为在[我的文档]下面有一个myeclipse的配置文件,叫.myeclipse.properties 你可以全盘搜索一下这个文件,然后改 ...
- Android SDK下载地址
原地址:http://lameck.blog.163.com/blog/static/38811374201262111309677/ Android SDK.ADT.tools等官方下载地址(201 ...
- 时间序列数据库武斗大会之 KairosDB 篇
[编者按] 刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融.通信以及Android手机操作系的开发,熟悉Linux及后台开发技术.曾参与翻译过<第一本Docker书> ...
- [转载]Spring Bean Configuration Inheritance
转自: http://www.mkyong.com/spring/spring-bean-configuration-inheritance/ In Spring, the inheritance i ...
- 【leetcode】Combination Sum (middle)
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...
- JsRender系列demo(3)-自定义容器
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...