javascript那些事儿(一)javascript数组用法总结(2)

//1、数组排序,默认升序排列,sort()方法会调用数组每一项的toString(),然后比较得到的字符串来排序
//sort() : 返回排序之后的数组
//var arr = [23,1,3,56,42,-1];
//arr.sort();
//alert(arr); // -1,1,3,23,42,56

//即使数组每一项都是数值,sort()方法比较的也是字符串
//var arr = [0,1,5,10,15];
//arr.sort();
//alert(arr); //0,1,10,15,5

//sort()可以接收一个函数参数,用于对数组项进行比较
/*
function compare(a,b){
	if(a < b){
		return -1;
	}else if(a > b){
		return 1;
	}else{
		return 0;
	}
}
var arr = [0,1,5,10,15];
arr.sort(compare);
alert(arr); //0,1,5,10,15
*/

//2、反转数组:reverse(),返回排序之后的数组
//var arr = [0,1,5,10,15];
//arr.reverse();
//alert(arr); //15,10,5,1,0

//3、concat()方法: 基于当前数组中所有项创建一个新数组
//concat()先创建当前数组的一个副本,然后将接收到的参数添加到数组的末尾,然后返回新的数组。
//如果没有给concat()方法传参数,则仅仅是复制当前数组并返回副本。
//如果给concat()传递的是一个或者多个数组,则会将数组每一项都添加到结果数组中,
//如果传递参数不是数组,则会简单地添加数组末尾。

//var names = ["zhangsan","lisi"];
//var names2 = names.concat('wangwu','zhaoliu',['xiaoming','xiangsun']);
//alert(names); //zhangsan,lisi
//alert(names2); // zhangsan,lisi,wangwu,zhaoliu,xiaoming,xiangsun

//4、slice() : 基于当前数组的一项或多项创建新数组,接收一个或者两个参数,项的起始位置和结束位置。
//slice方法不影响原始数组
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi"];
//var names2 = names.slice(1);
//var names3 = names.slice(1,4); //包含起始位置元素,不包含结束位置元素
//alert(names); //zhangsan,lisi,wangwu,zhaoliu,sunqi
//alert(names2); //lisi,wangwu,zhaoliu,sunqi
//alert(names3); //lisi,wangwu,zhaoliu

//如果slice参数中有负数,则用数组长度加上该数来定位
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi"];
//alert(names.slice(-2,-1)); // slice(-2,-1) = slice(3,4)  返回 ”zhaoliu“

//如果结束位置小于起始位置,则返回空数组
//alert(names.slice(4,1)); //空数组

//5、splice()方法:向数组中插入项,splice()方法始终返回一个数组,该数组包含从原始数组中删除的项,
//如果没有删除任何项,则返回空数组。
//(1):  删除数组项,从哪个位置开始删除,删除几项
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi"];
//alert(names.splice(0,2)); //zhangsan,lisi
//alert(names); //wangwu,zhaoliu,sunqi

//(2):  插入数组项,向指定位置插入任意数量的项。参数: 起始位置、0(要删除的项数)、要插入的项
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi"];
//var deleted = names.splice(1,0,'aa','bb','cc');
//alert(names); //zhangsan,aa,bb,cc,lisi,wangwu,zhaoliu,sunqi
//alert(deleted);//返回空数组

//(3):  替换,向指定位置插入任意数量的项,且同时删除任意数量项,参数: 起始位置、要删除的项数)、要插入的项
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi"];
//var deleted = names.splice(1,1,'aa','bb','cc');
//alert(names); //zhangsan,aa,bb,cc,wangwu,zhaoliu,sunqi
//alert(deleted);//lisi

//6、indexOf() \ lastIndexOf()  :  返回要查找项在数组中的位置,没找到返回-1,使用全等===比较
//支持浏览器包含IE9+、其他浏览器
//var names = ["zhangsan","lisi","wangwu","zhaoliu","sunqi","lisi","wangwu","sunqi"];
//alert(names.indexOf("lisi")); // 1
//alert(names.lastIndexOf("lisi")); // 5

//7、数组遍历:every(),filter(),forEach(),map(),some()  参数:每一项上运行的函数,运行该函数的作用域对象
//支持这些遍历方法的浏览器:IE9+及其他浏览器
//every(): 遍历数组每一项,如果每一项都返回true,则返回true
//some(): 遍历数组每一项,如果任意一项返回true,则返回true
//filter(): 过滤满足条件的值,返回这些值组成的新数组
//map() : 返回一个数组,这个数组的每一项都是在原始数组的对应项上运行传入函数的结果。
//forEach(): 没有返回值,与for循环一样
/*
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
	return item > 2;
});
alert(everyResult);  //false

var someResult = numbers.some(function(item,index,array){
	return item > 2;
});
alert(someResult);  //true

var filterResult = numbers.filter(function(item,index,array){
	return item > 2;
});
alert(filterResult);  //3,4,5,4,3

var mapResult = numbers.map(function(item,index,array){
	return item*2;
});

alert(mapResult);//2,4,6,8,10,8,6,4,2

numbers.forEach(function(item,index,array){
	//TODO
});
*/
//8、reduce()\reduceRight(): 遍历数组所有项,构建一个最终返回值
//reduce():  从前向后遍历,reduceRight() :从后项前遍历
//接收四个参数: 前一个值,当前值,项索引,数组对象
//函数返回值作为第一个参数自动传递给下一项。

//使用reduce()求和
var numbers = [1,2,3,4,5,6,7,8,9,10];
var sum = numbers.reduce(function(prev,cur,index,array){
	return prev + cur;
});
alert(sum); //55

时间: 2024-10-14 00:37:28

javascript那些事儿(一)javascript数组用法总结(2)的相关文章

关于JavaScript中apply与call的用法意义及区别(转)

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别.先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象.call([thisObj[,arg1[, arg2[,   [,.argN]]]]])参数thisObj可选项.将被用作当前对象的对象.arg1, arg2,  , argN可选项.将被传递方法参数序列.说明call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下

JavaScript splice() 方法,操作数组或者jquey grid的columns根据需要显示不同的字段

JavaScript splice() 方法,操作数组或者jquey grid的columns显示不同的字段 定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 语法 arrayObject.splice(index,howmany,item1,.....,itemX)   参数 描述 index 必需.整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置. howmany 必需.要删除的项目数量.如果设置为 0,则不会删

[13年迁移]javascript 的join(&quot;&quot;)方法,把数组变成统一字符串,用来写长的输出字符串

javascript 的join("")方法,把数组变成统一字符串,用来写长的参数字符串    function m(a) {        var b = ["<table class='DynarchCalendar-topCont'", j, "><tr><td>", "<div class='DynarchCalendar'>", e ? "<a clas

JavaScript中字符串分割函数split用法实例

这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write

JavaScript Good Parts学习笔记-数组篇

数组是一段线性分配的内存.通过计算偏移来访问其中的元素. 不幸的是,JavaScript并没有像数组一样的数据结构 作为替代,JavaScript提供了类数组的对象,把数组下标改为字符串. 1 数组字面量(Array Literals)---继承自Array.prototype,所以继承了大量有用的方法,比如length属性 var empty = [];var numbers = [    'zero', 'one', 'two', 'three', 'four',    'five', 's

JavaScript那些事儿-高大不好上的闭包

在上一篇博文<JavaScript那些事儿-无人知晓的预解释>对预解释作了概述,在写这篇博文前打算写几个经典案例,考虑到那些案例综合性比较强,也就循序渐进的有了这篇博文,这样对于学习和深入JavaScript也更加容易入手. 序 一同事去面试,面试官问了一道题:你写一个闭包我看下?于是同事火速写出如下代码: function fn(){ alert('Hello JavaScript Closure!!!');//妈蛋,E文本来就不好,找翻译才把闭包单词写出来 } fn(); 然后面试官摇摇头

Effective JavaScript Item 51 在类数组对象上重用数组方法

Array.prototype对象上的标准方法被设计为也可以在其它对象上重用 - 即使不是继承自Array的对象.因此,在JavaScript中存折一些类数组对象(Array-like Objects). 一个典型的例子是函数的arguments对象,在Item 22中对它进行过介绍.该对象并不继承自Array.prototype,所以我们不能直接调用arguments.forEach来对其中的元素进行遍历.但是,我们可以通过首先得到forEach方法的对象,然后调用call方法(可以参考Ite

每天一个JavaScript实例-递归实现反转数组字符串

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-递归实现反转数组字符串</title> <script> var func = function(x,indx,str){ return

思维导图(自己整理,希望对大家有用):JavaScript函数+canvas绘图+Array数组

1.javascript函数: 2.Array数组: 3.canvas绘图:

JavaScript那些事儿-容易迷失方向的this

      在上一篇博文<JavaScript那些事儿-高大不好上的闭包>撸主对闭包做了概述,当然闭包这个东西理解是有一个过程的,也许在一个瞬间,某个转身突然就悟到了,有种"只可意会不可言传"的感觉:撸主天生愚钝,也是在这个理解的路上,不敢说自己写得有多好,但是将自己的理解说出来了,有说得不好的请博友踊跃指正!撸主洗耳恭听.   序     在我们开发实际项目上this的作用极大,它也更灵活的增加编程的乐趣,撸主在此对使用this的场景一一概述,其实在最开始接触JavaSc