JavaScript数组的某些操作(二)

7、颠倒数组中元素的顺序(注意:不是为数组排序)——reverse方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>颠倒数组中元素的顺序</title>
		<script type="text/javascript">
			var intArray = [1,5,3,0];
			intArray.reverse();
			for(var intIndex in intArray){
				console.log(intArray[intIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:for循环依次输出:0 3 5 1;

8、数组的排序——sort方法

注意:该方法可以传递一个自定义的排序方法的方法名,如果不传参数那么数组将按字母顺序升序排列(即按照字符编码的顺序进行升序排序),这时如果要进行数字的排序,则会出现“意想不到”的效果,看如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>数组的排序——对字母字符的排序</title>
		<script type="text/javascript">
			var charArray = ["a","z","g","r"];
			charArray.sort();
			for(var charIndex in charArray){
				console.log(charArray[charIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:for循环依次输出:a g r z;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; intset=UTF-8" />
		<title>数组的排序——对数字的排序</title>
		<script type="text/javascript">
			var intArray = ["10", "5", "40", "25", "1000", "1"];
			intArray.sort();
			for(var intIndex in intArray){
				console.log(intArray[intIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:for循环依次输出:1 10 1000 25 40 5;

小结:对比上面两段代码不难发现没有参数的sort方法在对数字类型的数组排序时是起不到排序效果的(呵呵呵,有人可能会想:我如果把上面代码中数字数组元素改成“var intArray = [10, 5, 40, 25, 1000, 1];”应该就可以了吧,嗯嗯嗯,你想的很周到,可是事实是这样也不行),如果要实现对数字数组的排序代码应该这样写:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; intset=UTF-8" />
		<title>数组的排序——对数字的排序</title>
		<script type="text/javascript">
			function compareTo(a,b){
				return a - b;
			}
			var intArray = ["10", "5", "40", "25", "1000", "1"];
			intArray.sort(compareTo);
			for(var intIndex in intArray){
				console.log(intArray[intIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; intset=UTF-8" />
		<title>数组的排序——对数字的排序</title>
		<script type="text/javascript">
			var intArray = ["10", "5", "40", "25", "1000", "1"];
			intArray.sort(function(a,b){return a - b;});
			for(var intIndex in intArray){
				console.log(intArray[intIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:for循环依次输出:1 5 10 25 40 1000;

对比较函数参数的说明:如果想按照自定义的排序规则排序,就需要提供比较函数,该函数需要传入两个参数(常命名为 a
和 b)并返回一个用于说明这两个值的相对顺序的数字。其返回值如下:

1)、若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

2)、若 a 等于 b,则返回 0。

3)、若 a 大于 b,在排序后的数组中
a 应该出现在 b 之后,则返回一个大于 0 的值。

对于数组排序言尽于此,不知道大家有没有留意到对中文字符的排序——上面阐述了对字母和数字的排序,sort对中文的排序怎么样呢?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>数组的排序——对中文字符的排序</title>
		<script type="text/javascript">
			var charArray = ["中","啊","家","高"];
			charArray.sort();
			for(var charIndex in charArray){
				console.log(charArray[charIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>数组的排序——对中文字符的排序</title>
		<script type="text/javascript">
			var charArray = ["中","啊","家","高"];
			charArray.sort(function(a,b){return a - b;});
			for(var charIndex in charArray){
				console.log(charArray[charIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:上面两个代码片段中的for循环输出的结果是一样的——依次输出:中 啊 家 高;

小结:从输出结果可以发现上面代码对中文的排序是错误的,那么如何实现对中文的排序呢,请看下面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>数组的排序——对中文字符的排序</title>
		<script type="text/javascript">
			var charArray = ["中","啊","家","高"];
			charArray.sort(function(a,b){return a.localeCompare(b);});
			for(var charIndex in charArray){
				console.log(charArray[charIndex]);
			}
		</script>
	</head>
	<body>
	</body>
</html>

说明:上面for循环依次输出:啊 高 家 中;这才是我们想要的结果

小结:如果要实现中文字符的排序还是要借助sort方法,但是排序比较方法中使用的是localeCompare方法,该方法也会返回一个用于说明这两个值的相对顺序的数字。其返回值如下:

1)、若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

2)、若 a 等于 b,则返回 0。

3)、若 a 大于 b,在排序后的数组中 a 应该出现在 b 之后,则返回一个大于 0 的值。

9、将数组中的元素转换为以特定字符分割的字符串——join方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>将数组中的元素转换为以特定字符分割的字符串——以英文逗号分隔</title>
		<script type="text/javascript">
			var nameArray = ["陈洪涛","李小宁","吴思娣"];
			var nameString = nameArray.join();
			console.log(nameString);
		</script>
	</head>
	<body>
	</body>
</html>

说明:控制台输出的结果为:陈洪涛,李小宁,吴思娣

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>将数组中的元素转换为以特定字符分割的字符串——以中文逗号分隔</title>
		<script type="text/javascript">
			var nameArray = ["陈洪涛","李小宁","吴思娣"];
			var nameString = nameArray.join(",");
			console.log(nameString);
		</script>
	</head>
	<body>
	</body>
</html>

说明:控制台输出的结果为:陈洪涛,李小宁,吴思娣

小结:通过上面两段代码我们可以更深层此的理解join方法——如果没有为该方法传递任何参数,那么其默认的数组元素分割符为英文逗号;如果为该方法传递了参数,那么数组元素分割符为所传递参数指定的分割符;

JavaScript数组的某些操作(二)

时间: 2024-08-02 19:05:47

JavaScript数组的某些操作(二)的相关文章

JavaScript数组的某些操作(一)

在软件开发的过程中JavaScript的编程在所难免,其中对数组的操作尤为常见,这里介绍一下和JavaScript数组相关的某些操作: 1.删除并返回数组的第一个元素--shift方法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns=&quo

javascript 数组的常用操作函数

join() Array.join(/* optional */ separator) 将数组转换为字符串,可带一个参数 separator (分隔符,默认为","). 与之相反的一个方法是:String.splict() ,将字符串分隔成若干块来创建一个新的数组. reverse() Array.reverse(),颠倒数组元素的顺序,返回逆向的数组.注意此方法会修改原来数组元素的位置,而不是返回一个新的数组. sort() sort() 方法将数组中的元素排序并返回排序后的数组.s

Javascript 数组的一些操作

(1) shift  删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 (2) unshift  将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7 注:在IE6.0下测试返回值总为 undefined,FF2.0下测试返

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

JavaScript数组常用操作

前言 相信大家都用惯了jquery或者underscore等这些类库中常用的数组相关的操作,如$.isArray,_.some,_.find等等方法.这里无非是对原生js的数组操作多了一些包装. 这里主要汇总一下JavaScript数组操作的常用API.相信对大家解决程序问题很有帮助. 1.性质 JavaScript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数.然后,这些数字索引在内部被转换为字符串类型,这是因为JavaScript对象中的属性名必须是字符串. 2

javascript数组操作(创建、元素删除、数组的拷贝)

这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创

JavaScript 数组操作函数--转载+格式整理

JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,concat的总结.身为一个有点完美主义的强迫症患者来说,原文的格式,差点杀死我.so,这篇文章就出来了……原文:传送门. 一.push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作. push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度. 注意:如果参数也是

javascript数组赋值操作

最近在司徒正美的<javascript框架设计>,在里面发现了一个段代码 1 ...... 2 3 var _len = arr1.length; 4 while (_len) { 5 arr2[--_len] = arr1[_len]; 6 } 7 8 ...... 这是一个数组间赋值的操作,咋一看,之前还没碰到这样的写法.平时我个人都是这样写的. 1 function assignment2(arr1, arr2) { 2 for (var i = 0,_len = arr1.length

RX学习笔记:JavaScript数组操作

RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.unshift(123); array.unshift("value1","value2"); push() 在数组末尾添加元素 array.push("value"); array.push(123); array.push("value1&