标签 array 下的文章

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
    @SuppressWarnings("unchecked")
    T[] copy = ((Object)newType == (Object)Object[].class)
        ? (T[]) new Object[newLength]
        : (T[]) Array.newInstance(newType.getComponentType(), newLength);
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}

可以看到,最终调用的是System.arraycopy()方法,关于这个方法使用,可查看System.arraycopy详解

Read more...

Published on by


Published on by


Published on by


原文:http://heeroluo.net/article/detail/10
虽然不太常用,但我们的确可以给对象添加以数字为属性名的属性:

var obj = {};
obj[0] = 1;
obj[1] = 2;

这个对象并不是数组类型,那有没有办法把它转换为数组类型呢?jQuery代码中采用了Array.prototype.slice把这种对象转换为数组,但我试了好几遍,就是不行:

var obj = {};
obj[0] = 1;
obj[1] = 2;
alert(Array.prototype.slice.call(obj));

Read more...

Published on by


ECMAScript中的Array类有一个排序方法,即本文主要讨论的Array.prototype.sort(下面简称sort),它的调用是很简单的:

var arr = [11, 2, 1];
alert(arr.sort());

然而,上面程序的输出结果是 "1,11,2" ,而不是我们期望的"1,2,11",这是因为在默认情况下,sort方法排序时会把元素临时转成字符串再比较。要解决这个问题,就要给sort传递一个参数,这个参数是一个进行元素比较的函数,其原型如下:

function compareFn(x, y)

它接受两个参数 x 和 y 。如果 x < y ,返回负数;如果 x == y,返回0;如果 x > y ,返回正数。如果要判断数字间的大小关系,直接做减法运算即可:

Read more...

Published on by