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 ...
随机推荐
- 百度快收录吧!!!a39fe054b88866bc737dd5fb02f39e41
百度快收录吧!!!a39fe054b88866bc737dd5fb02f39e41 }416oTemocleW{yek
- C#截取文件的文件夹地址
创建文件 if (!File.Exists(file_name)) { File.Create(file_name).Close(); } using System.IO; 如果没有.Close(), ...
- html+css学习笔记 4[定位]
如何让图1中的div2移动到如图2上的位置: 思路:哪些css命令能够影响盒子显示的位置呢? relative相对定位/定位偏移量 position:relative; 相对定位 a ...
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance
题目链接: http://codeforces.com/contest/669/problem/D 题意: 给你一个初始序列:1,2,3,...,n. 现在有两种操作: 1.循环左移,循环右移. 2. ...
- text-align:justify实现文本两端对齐布局,兼容IE
要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清楚的概念.大多 IE下的显示错误,就是源于 haslayout. 什么是 haslayout ...
- 使用文本文件(.txt)进行数据存取的技巧总结(相当的经典)
使用文本文件(.txt)进行数据存取的技巧总结(相当的经典) 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原 ...
- Observer Pattern
Motivation We can not talk about Object Oriented Programming without considering the state of the ob ...
- POJ 3258
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5961 Accepted: 2579 D ...
- POJ 3125 Printer Queue(队列,水题)
题意:有多组数据,每组数据给出n,m,n表示需要打印的文件个数,m表示要打印的目标位置(m为0~n-1). 接下来给出n个数,第i个值对应第i-1个位置的优先级大小. 打印规则如下: ...
- HDU 4509 湫湫系列故事——减肥记II(暴力模拟即可)
看了题目后,没自己做,直接看别人题解了,这里转一下. 看了之后,突然想起scanf还可以按照自己写的格式输入数据啊,差点连这个都忘记了啊. 注意输入中时间可能有重复的. http://www.cnbl ...