- 创建数组:var arr = new Array();
- 确定某个值是否为数组:
- instanceof:if(value instanceof Array)
- 此操作符的问题在于其假定只有一个全局执行环境。若网页中包涵多个框架则会出问题
- isArray(value):if(arr.isArray(value))
- indexOf(value):搜索一个指定元素的位置。注意区分字符串和数字
- slice(indexfront,indexbehined):截取Array的部分元素,然后返回一个新的Array.返回的数组元素不包括indexbehined
- 如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用此特性我们可以轻易的复制一个数组:++var aCopy = arr.slice();++
- ==若传入参数为负数,则用数组长度加上该数来确定位置==
- arr.length = Length;
- 此语句可直接改变数组的长度(空位输出为undefined)。
- 通过索引赋值时,索引超过了范围,同样会引起Array大小的变化
- splice(indexfront,indexbehined,’value’,’value’):从指定的索引开始删除若干元素,然后再从该位置添加若干元素
- 删除:splice(删除项首位置,删除项个数);
- 插入:splice(起始位置,要删除的项数,要插入的项);
- 替换:splice(起始位置,要删除的项数,要插入的任意数量的项);
- 最全能的一个方法!!!!!!!!!!
- 重排序
- reverse:arr.reverse();—-降序排列数组中元素
- sort():arr.sort();—-升序排列数组中元素
- 然而这两种发方法有个致命缺陷:默认将数字视为字符串。也就是说会出现升序排序时10在5之前。故我们需要手动在此之前加一个比较函数compare(calue1,value2)
重排序
function compare(value1,value2){
if(value1 < value2)
return -1;
else if(value1 > value2)
return 1;
else
return 0;
}
var value = [0,5,10,15];
value.sort(compare);
alert(value);
- 位置方法
- indexOf():从头找
- lastIndexOf():从尾找
- 二者接收的参数为:要查找的项&查找起点位置的索引(这个写不写都行)。返回值为所找到的值的对应的索引。
- 迭代方法
- 以下五种方法的参数均为要在数组中每一项上运行的函数和运行函数的作用域对象(影响this的值)。
- 传入这些方法中的函数会接收3个参数:数组项的值、该项在数组中的位置和数组对象本身
- every(function(item,index,array){….}):对数组中每一项运行给定函数,若对每一项都返回true,则返回true
- filter(function(item,index,array){….}):对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach(function(item,index,array){….}):对数组中每一项运行给定函数,无返回值
- map(function(item,index,array){….}):对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
- some(function(item,index,array){….}):对数组中每一项运行给定函数,对任一项返回true则返回true
- 归并方法
- reduce():从前向后迭代数组的所有项然后构建一个最终返回的值
- reduceRight():从后向前迭代数组的所有项然后构建一个最终返回的值
- 二者接受的参数为:一个在每一项上调用的函数和作为归并基础的初始值。传给reduce()和reuceRight()的函数接收四个参数:前一个值、当前值、项的索引、数组对象
求数组中所有值之和
var value = [1,2,3,4,5];
var sum = value.reduce(function(prev,cur,index,array));
alert(sum);
- push、pop、shift、unshift:
- push(‘value’,’value’,….):向Array的末尾添加若干元素
- pop():把Array的最后一个元素删除掉——–返回删除的元素
- unshift(‘value’,’value’,….):往Array的头部添加若干元素——-返回值为数组长度
- shift() 方法则把Array的第一个元素删掉——空数组继续shift不会报错,而是返回undefined
- 如此一来,用这四条语句就可以轻易的实现栈和队列
栈方法
var colors = new Array();
var count = colors.push('red','green');
alert(count);
count = colors.push('black');
alert(count);
var item = colors.pop();
alert(itemm);
alert(colors.length);
队列方法
var colors = new Array();
var count = colors.push('red','green');
alert(count);
count = colors.push('black');
alert(count);
var item = colors.shift();
alert(itemm);
alert(colors.length);
<html>
<body>
<script type="text/javascript">
var x
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
for (x in mycars)
document.write(mycars[x] + "<br />")
</script>
</body>
</html>
//Saab
//Volvo
//BMW
-
- join():它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
- 合并两个数组 — ++arr1.concat(arr2)++:++doucument.write(arr1.concat(arr2))++
- 用数组的元素组成字符串 — join()
<html>
<body>
<script type="text/javascript">
var arr = new Array(3);
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.join());
document.write("<br />");
document.write(arr.join("."));
</script>
</body>
</html>
//George,John,Thomas
//George.John.Thomas
-
- 文字数组 - sort():document.write(arr.sort())
- 数字数组 - sort():document.writte(arr.sort(sortNumber))
- 迭代方法
- every():对数组中的每一项运行给定函数。若该函数对每一项都返回true,则返回true
- filter():对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach():对数组的每一项运行给定函数。此方法无返回值
- map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
- some():对数组中的每一项运行给定函数,若该函数的对任一项返回true,则返回true。
- 以上方法均不会修改数组中包含的值