锁定老帖子 主题:JavaScript内核系列 第5章 数组
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-25
s79 写道 引用 另一个与其他语言的数组不同的是,字符串也可以作为数组的下标……
这句话容易误导初学者。建议更正。 是呀,这时候已经不是下标了吧. 而是对象的属性? |
|
返回顶楼 | |
发表时间:2010-04-25
不错 不错 全部复制走
|
|
返回顶楼 | |
发表时间:2010-04-25
最后修改:2010-04-25
yuyue618 写道 s79 写道 引用 另一个与其他语言的数组不同的是,字符串也可以作为数组的下标……
这句话容易误导初学者。建议更正。 是呀,这时候已经不是下标了吧. 而是对象的属性? 看怎么理解了,用字符串作为下标可称为关联数组。 数组分类: 1、从数组的下标分为索引数组、关联数组 2、从对数据的存储分为静态数组、动态数组 js的数组同时属于索引数组和动态数组,本质上它就是一个对象,js的索引数组并非“连续分配”内存的,因此索引方式并不会带来很高的效率。而c,c++,java中的数组则是连续分配内存的,如果按照c,c++,java中数组的理解,那么js中的关联数组不能称为数组,即使是js中的Array也不能称为数组,因为Array只是具有索引数字,但并非“连续分配”内存的。 |
|
返回顶楼 | |
发表时间:2010-04-25
yuyue618 写道 s79 写道 引用 另一个与其他语言的数组不同的是,字符串也可以作为数组的下标……
这句话容易误导初学者。建议更正。 是呀,这时候已经不是下标了吧. 而是对象的属性? 事实上,在JavaScript里,不存在数字下标这个传统上的东西,数字下标和字符串下标都是“JavaScript数组”这种特殊对象的属性,比如: var array = ["first", "second", "third"]; print(array["0"]);//以字符串0为下标 print(array[0]);//以数字0为下标 会得到相同的结果: 引用 first first JavaScript数组其实是将数字转化成字符串,然后将这个字符串作为“数组”对象的属性来进行存取的。说白了,在存取属性上,它跟其他的对象并无二致。 |
|
返回顶楼 | |
发表时间:2010-04-25
最后修改:2010-04-25
abruzzi 写道 yuyue618 写道 s79 写道 引用 另一个与其他语言的数组不同的是,字符串也可以作为数组的下标……
这句话容易误导初学者。建议更正。 是呀,这时候已经不是下标了吧. 而是对象的属性? 事实上,在JavaScript里,不存在数字下标这个传统上的东西,数字下标和字符串下标都是“JavaScript数组”这种特殊对象的属性,比如: var array = ["first", "second", "third"]; print(array["0"]);//以字符串0为下标 print(array[0]);//以数字0为下标 会得到相同的结果: 引用 first first JavaScript数组其实是将数字转化成字符串,然后将这个字符串作为“数组”对象的属性来进行存取的。说白了,在存取属性上,它跟其他的对象并无二致。 呵,数组的数字索引看起来像其它语言的索引,但实际上它会隐式的转换成字符串。亦可参考 http://snandy.iteye.com/blog/284805 http://snandy.iteye.com/blog/407351 |
|
返回顶楼 | |
发表时间:2010-04-25
zhouyrt 写道 呵,数组的数字索引看起来像其它语言的索引,但实际上它会隐式的转换成字符串。亦可参考 http://snandy.iteye.com/blog/284805 http://snandy.iteye.com/blog/407351 嗯,不错,用一个for..in就可以看到了。JavaScript的数组本质上还是键-值这样的形式,而不是一个连续的内存块(C/Java中都是连续的),而是一个散列表。 |
|
返回顶楼 | |
发表时间:2010-04-25
介绍下sort()函数的用法吧(这个问的有点弱了
![]() |
|
返回顶楼 | |
发表时间:2010-04-25
length修改后会影响数组的实际大小,这个得提一下
|
|
返回顶楼 | |
发表时间:2010-04-25
hyj1254 写道 介绍下sort()函数的用法吧(这个问的有点弱了
![]() 好的,我在最后加一小节,先整理下,随后再贴上来。 |
|
返回顶楼 | |
发表时间:2010-04-25
cryolite 写道 length修改后会影响数组的实际大小,这个得提一下
本来准备在5.1小节上讲的,结果举的例子少些了些东西: var array = new Array(1, 2, 3, 4, 5); print(array.length); array.length = 3; print(array.length); 运行结果为: 引用 5 3 1,2,3 不知道大家有没有注意到这个1,2,3,其实这个就是修改了length属性之后执行print(array)语句的运行结果,可能排版的时候给删掉了,不好意思。我再修改下。 |
|
返回顶楼 | |