在学习JavaScript的过程里,冥冥之中总觉得数组,对象,和字符串之间存在着某种联系。
他们都是存放数据的载体,对象是以key,value的形式区分数据,而数组和字符串以下标的方式区分数据。
比如说他们各自都存储了一堆的数据,要你从他们之中取出某个特定的数据,你要如何取呢?
查:
对于对象:你可以用obj[‘key’]的方式访问特定的数据。
对于数组:你可以用arr[index]的方式访问特定数据。
如果要访问多个数据,可用arr.slice().
arr.concat方法是组合传入的数据与原来数组的数据,形成新数组。也是访问原数组数据的一种形式。
对于字符串:你也可以用str[index]的方式访问字符串里特定位置的数据
从上面他们取出特定数据的方式中可以看出他们取数据的方式是大同小异的,确切的说是一样的.因为 [ ] 里面如果是数字类型可以不用引号。
此外,字符串中还可以用自身的方法str.charAt(index)的方式获取数据。
除了获取单个数据,我们还可以获取多个数据,
比如:
str.slice()获取全部数据,
str.slice(index)获取包括第index位在内的之后所有数据,
str.slice(index,index+n)获取第index位到index+n之前的数据。符合左闭右开的原则。
此外,str.substring与slice方法类似,区别就在于第一个参数如果是负数时,slice会自动跟length值做运算,而substring则会视作0.
str的substr方法与数组上的splice方法类似,第一个参数传index值,第二个参数传入要截取的个数。
除此之外,字符串上还有一个concat方法,它的作用是将字符串与自己传入的参数结合成一个新字符串。
这些都是借用原字符串的方法,而不会改变原字符串。
假如,你是要查询特定数据在组织中的位置,那么在数组和字符串中都可用indexOf()的方法查询该数据的位置。
改:
如果说上面的方式是访问数据的,那么可不可以改变特定数据的数据值呢?
对于对象:用obj[‘key’]='newvalue’的方式可以写入新的数据
对于数组:arr[index]=‘newvalue’,但数组中还可以用arr.splice(index,1,newvalue)的方式替换数据。
字符串则改变不了原来的数据。
增:
如果说上述是从查,和改的方面对数据进行的处理,那么如果我们要往里增加一个数据呢?
对于对象:obj[‘newkey’]=‘value’ 即可写入新的数据
对于数组:
如果你要在前面添加新数据则用:arr.unshift(value)
如果你要在最后添加数据:arr.push(value)
如果需要在特定位置index处增加数据可用arr.splice(index, 0,newvalue);
此处的value可以是任何类型的数据:number,string,object,function,undefined,boolean。
对于字符串: 你是不可能改变原字符串的,所以你添加不了。
删:
删除一个对象里的某个数据:delete obj[‘key’]
但是用delete 的方式虽然可以删除数组中的某一项的数据,但该数据的下标仍然存在,值显示为empty。如果要将一个数据连同它的下标都去掉,得用数组自身的方法arr.splice(index,1).但如果是要删除特定位置的数据,数组自身有特定的方法:
删除最前面的数据:arr.shift();删除最后面的数据:arr.pop();
同样的你是不能删除原字符串的。