0
点赞
收藏
分享

微信扫一扫

JavaScript:Array


一、定义



new Array();
new Array(size);
new Array(e1,e2,....,e);
[e1,e2,...,e];

二、ECMAScript5新增方法

JavaScript:Array_JavaScript Array

三、常用方法


1. 原数组不变,返回新数组

concat(value/array)    连接两个或更多的数组,并返回结果。

var a = [1,2,3];
a.concat(4,5); //[1, 2, 3, 4, 5]

slice(start,end)    从某个已有的数组返回选定的元素

var a = [1,2,3,4,5];
a.slice(1,3); //[2, 3]

2. 原数组改变


shift()    删除并返回数组的第一个元素

[1,2,3].shift();    //1

pop()    删除并返回数组的最后一个元素

[1,2,3].pop();    //3

push()    向数组的末尾添加一个或更多元素,并返回新的长度。

[1,2,3].push(1);    //4

reverse()    颠倒数组中元素的顺序。

var a = [1,2,3];
a.reverse(); //[3, 2, 1]

sort()    对数组的元素进行排序

var a = [1,2,3,4,5];
a.sort(function(a,b){
return b-a;
}) //[5, 4, 3, 2, 1]

splice(index,howmany,item1,.....,itemX)    删除元素,并向数组添加新元素,返回被删除的项。

var a = [1,2,3];
a.splice(1,2,'a','b','c'); //[2, 3]
a; //[1, "a", "b", "c"]

var a = [1,2,3];
a.splice(1,0,['a','b']); //[] 0不会删除
a; //[1, Array[2], 2, 3]

unshift()    向数组的开头添加一个或更多元素,并返回新的长度。

var a = [1,2,3];
a.unshift('a','b'); //5

3. 其他

join(separator)    把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。


[1,2,3].join();        //"1,2,3"
[1,2,3].join(",!~");//"1,!~2,!~3"

valueOf()    返回数组对象的原始值

var a = [1,2,3];
a.valueOf(); //[1,2,3]

四、数组的最佳实践

1. 构建字符串的最优方法
当你需要遍历数组或对象的时候,不要总想着“for”语句,要有创造性,总能找到更好的办法:

var arr = ['item 1', 'item 2', 'item 3', ...];  
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

2. 找出元素 item 在给定数组 arr 中的位置 

function indexOf(arr, item) {
return [].indexOf.call(arr,item)
}
indexOf([ 1, 2, 3, 4 ], 3)

3. 计算给定数组 arr 中所有元素的总和 

function sum(arr) {
return arr.reduce(function(pre,cur,ind,arr){
return pre+cur;
})
}
sum([ 1, 2, 3, 4 ])

4. 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 

function remove(arr, item) {
return arr.filter(function(value, index, arr) {
if (value === item) {
return false
}
return true
})
}
remove([1, 2, 3, 4, 2], 2)

5. 移除数组 arr 中的所有值与 item 相等的元素,请直接在给定的 arr 数组上进行操作 

function removeWithoutCopy(arr, item) {
var j = 0;
for(var i = 0, l = arr.length; i < l; i ++){
if(arr[i] != item){
arr[j++] = arr[i];
}
}
arr.length = j;
return arr;
}
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)

6. 在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组 

function append(arr, item) {
return arr.concat([item]);
}

7. 删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组 

function curtail(arr) {
return arr.slice(1);
}
curtail([1, 2, 3, 4])

8. 删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组 

function truncate(arr) {
return arr.slice(0,arr.length-1);
}
truncate([1, 2, 3, 4])

9. 在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组 

function prepend(arr, item) {
return [item].concat(arr);
}
prepend([1, 2, 3, 4], 10)

10. 统计数组 arr 中值等于 item 的元素出现的次数 

function count(arr, item) { 
var res;
return (res = arr.toString().match(new RegExp("\\b"+item+"\\b","g"))) ? res.length : 0;
}
count([1, 2, 4, 4, 3, 4, 3], 4)

11 找出数组 arr 中重复出现过的元素 

function duplicates(arr) {
var ary = arr.sort();
var len = arr.length;
var res = [];
for(var i=0;i<len;i++){
if(ary[i-1]===ary[i] && ary[i]!=ary[i+1]){
res.push(ary[i]);
}
}
return res;
}
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3])

12. 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组 

function square(arr) {
return arr.map(function(x) {return x*x});
}
square([1, 2, 3, 4])



举报

相关推荐

0 条评论