标签:
<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; } });
标签:
原文地址:http://www.cnblogs.com/manchun/p/4567160.html