zoukankan      html  css  js  c++  java
  • 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方法——假设没有为该方法传递不论什么參数,那么其默认的数组元素切割符为英文逗号。假设为该方法传递了參数。那么数组元素切割符为所传递參数指定的切割符;

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6951995.html
Copyright © 2011-2022 走看看