定义
var empty=[];
何时使用
当属性名是小而连续的整数时,使用数据组,否则使用对象。
识别
typeof运算符对数据没有意义,因为返回的是‘object‘
//ECMA5 已添加该方法
可以添加静态方法:
Array.isArray=function(obj) { return Object.prototype.toString.apply(obj)===‘[object Array]‘ }
长度
length属性的值是这个数组的最大整数属性名加1:
array=[];
array[7]=0;
console.log(array.length);
设置更大length不会给数组分配更多的空间(undefined),而把length设小将导致所有下标等于新的length的属性被删除。
添加
添加一个元素:
empty[empty.length]="";
empty.push("");
删除
delete numbers[2]; //留下一个空洞
numbers.splice(2,1); //向前移动
查找
//IE9+ 支持
array.indexOf()
array.lastIndexOf()
输出
alert(array.toString()); alert(array.valueOf()); alert(array); alert(array.join(‘,‘));
方法
- 字符串方法:
array.concat() //连接字符串,相当于‘+’
array.join() //生成字符串
- 栈方法:
array.push()
array.pop()
- 队列方法
array.shift()
array.unshift()
- 重排序方法
array.reverse() //反排序
array.sort() //字符串排序
- 操作方法
array.slice()
array.splice() //相当强大,可实现任意的增删改。
排序
数据原型中有sort的方法(Array.prototype.sort ),但只对字符排序
function sortNumber(a, b) { return a - b } var arr = new Array(6) arr[0] = "10" arr[1] = "5" arr[2] = "40" arr[3] = "25" arr[4] = "1000" arr[5] = "1" document.write(arr + "<br />") //字符排序 document.write(arr.sort() + "<br />") //1,10,1000,25,40,5 //数据排序 document.write(arr.sort(sortNumber)) //1,5,10,25,40,1000
迭代
在此只介绍简单用法.//以下只支持ECMA5
every() //每一个都满足条件返回true filter() //返回满足条件的子数组 forEach() //对每一个元素进行操作,不返回 map() //对每一个元素进行操作,返回结果数组 some()//有一个满足条件返回true
归并
当前后项有关系时实现的操作,方便实现双向链表的功能. //以下只支持ECMA5
reduce() reduceRight()
编码规范
以下来自GitHub,有很多关于javascript优秀的编程风格,推荐大家看看:https://github.com/airbnb/javascript
- Use the literal syntax for array creation.
// badvar items =newArray(); // goodvar items = [];
- Use Array#push instead of direct assignment to add items to an array.
var someStack = []; // bad someStack[someStack.length] =‘abracadabra‘; // good someStack.push(‘abracadabra‘);
- When you need to copy an array use Array#slice. jsPerf
var len = items.length; var itemsCopy = []; var i; // badfor (i =0; i < len; i++) { itemsCopy[i] = items[i]; } // good itemsCopy = items.slice();
- To convert an array-like object to an array, use Array#slice.
functiontrigger() { var args =Array.prototype.slice.call(arguments); ... }