数组方法:排序和清空

<h1>数组清空</h1>
<p>我们知道javascript变量存储方式分为引用类型和直接量。数组属于对象,即引用类型,引用的是变量指针地址.</p>
<p>再说到下面的请空数组的方式,如果采用直接赋值一个新数组的方式,那么之前引用的数组可能不会被释放(有其他的引用),例如下面的代码:</p>
<p>这时候a和b就不是同一个数组了,清空了a而b还是指到之前的引用地址。所以最佳的请空数组方式是:将length设置为0:</p>
<h1>数组的排序</h1>
<p>Array.prototype.sort(),sort方法接受一个参数——Function,function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行比较,如果是Number类型则比较值的大小。如果比较的函数中返回1则两个元素交换位置,0和-1不交换位置。先看一个例子:</p>


   var a = [2,3];
    var b = a;
    // a = [];
    // console.log(b); // [2, 3]
    a.length = 0;
    console.log(a, b); // [], []

    var arr = [13, 5, 20, 1];
    // arr.sort();
    // console.log(arr); // [1, 13, 20, 5] 在当前数组上排序
    arr.sort(function(a, b) { // 默认是升序
      // if (a > b) {
      //   return 1;
      // } else {
      //   return -1;
      // };
      return (a > b) ? 1: -1; // 取代if else
    });
    console.log(arr); // [1, 5, 13, 20]
    var arr2 = [
      { a : 2, b : 3.2}
    , { a : 3, b : 1.2}
    , { a : 4, b : 2.2}
    , { a : 6, b : 1.2}
    , { a : 5, b : 3.2}
    ];
    arr2.sort(function(a, b) {
      return a.b > b.b ? 1: -1;
    });
    console.log(arr2);
    // 在排序的时候,先按b属性排序,如果x.b的大于y.b则将x移到y的右边,如果x.b等于y.b则再通过x.a和y.a进行比较,所以代码如下:
    var arr3 = [
      { a : 2, b : 3.2}
    , { a : 3, b : 1.2}
    , { a : 4, b : 2.2}
    , { a : 6, b : 1.2}
    , { a : 5, b : 3.2}
    ];
    arr3.sort(function(a, b) {
      if ( a.b > b.b) {
        return 1;
      } else if ( a.b == b.b) {
        if ( a.a > b.a) {
          return 1
        } else {
          return -1;
        };
      } else {
        return -1;
      }
    });
时间: 2024-12-25 22:33:32

数组方法:排序和清空的相关文章

小康陪你学JAVA--------sort方法对数组进行排序

本篇和大家分享另一种数组的操作的方法——sort方法对数组进行排序. 范例:TestJava4_5.java 01 // 以下程序是数组的排序操作,在这里使用了sort方法对数组进行排序 02 import java.util.*; 03 public class TestJava4_5 04 { 05    public static void main(String[] args) 06  { 07       int a[] = {4,32,45,32,65,32,2} ; 08 09  

PHP学习记录数组中的数组的排序方法

数组的排序-按首字母或者首数组排序 <?php $item=array('apple','orange','banana'); echo'未排序前'; print_r($item); echo'<br/>'.'排序后'; sort($item); print_r($item); echo'<br/>'; //数字的排序 $num=array(3,4,22,31,34,52,1,5,2,4); echo'未排序前'; print_r($num); echo'<br/>

Java使用sort()方法对数组进行排序

1 package com.yzy.test; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 /** 8 * @param args 9 */ 10 public static void main(String[] args) { 11 int[] array = { 43, 64, 21, 6565, 3424, 22, 6523, 345 }; 12 Arrays.sort(array); 13 for (int i : a

JavaScript 使用 sort() 方法从数值上对数组进行排序

使用 sort() 方法从数值上对数组进行排序. <html> <body> <script type="text/javascript"> function sortNumber(a, b) { return a - b } var arr = new Array(6) arr[0] = "10" arr[1] = "5" arr[2] = "40" arr[3] = "25&q

js中的数组对象排序(方法sort()详细介绍)

定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所

常用数组方法

js与jquery常用数组方法总结 昨天被问数组方法的时候,问到sort()方法是否会改变原来的数组.本来我猜是不会,也是这么说,马上我又觉得,知识这种东西,不确定的时候直接说不确定或不知道就好,只是凭借着不确定的猜测或者是记忆,害人害己,于是我又回答不知道.结果果然...我记错了0.0 还是自己总结测试一下比较靠谱,印象也比较深刻.欢迎大家提出相关意见或建议,提前谢谢哈~ 一.原生js方法 1.遍历数组 in(同时也是对象遍历属性的方法) var a = [1, 2, 3]; for (x i

js与jquery常用数组方法总结

转载:http://www.cnblogs.com/codetker/p/4676899.html 昨天被问数组方法的时候,问到sort()方法是否会改变原来的数组.本来我猜是不会,也是这么说,马上我又觉得,知识这种东西,不确定的时候直接说不确定或不知道就好,只是凭借着不确定的猜测或者是记忆,害人害己,于是我又回答不知道.结果果然...我记错了0.0 还是自己总结测试一下比较靠谱,印象也比较深刻.欢迎大家提出相关意见或建议,提前谢谢哈~ 一.原生js方法 1.遍历数组 in(同时也是对象遍历属性

js中的数组对象排序

一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"

第六讲 Block块语法及Block与数组的排序,ios字面量的使用(源代码上传)

1 #import <Foundation/Foundation.h> 2 3 4 #import "Student.h" 5 6 int c =200; 7 int main(int argc, const char * argv[]) { 8 @autoreleasepool { 9 /* 10 ------------------------------------- 11 定义block变量的四种方法 12 -----------------------------