首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript:Array

一、定义

代码语言:javascript
复制
new Array();
new Array(size);
new Array(e1,e2,....,e);
[e1,e2,...,e];

二、ECMAScript5新增方法

三、常用方法

1. 原数组不变,返回新数组 concat(value/array) 连接两个或更多的数组,并返回结果。

代码语言:javascript
复制
var a = [1,2,3];
a.concat(4,5);    //[1, 2, 3, 4, 5]

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

代码语言:javascript
复制
var a = [1,2,3,4,5];
a.slice(1,3);    //[2, 3]

2. 原数组改变 shift() 删除并返回数组的第一个元素

代码语言:javascript
复制
[1,2,3].shift();    //1

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

代码语言:javascript
复制
[1,2,3].pop();    //3

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

代码语言:javascript
复制
[1,2,3].push(1);    //4

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

代码语言:javascript
复制
var a = [1,2,3];
a.reverse();    //[3, 2, 1]

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

代码语言:javascript
复制
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) 删除元素,并向数组添加新元素,返回被删除的项。

代码语言:javascript
复制
var a = [1,2,3];
a.splice(1,2,'a','b','c');    //[2, 3]
a;    //[1, "a", "b", "c"]
代码语言:javascript
复制
var a = [1,2,3];
a.splice(1,0,['a','b']);    //[] 0不会删除
a;    //[1, Array[2], 2, 3]

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

代码语言:javascript
复制
var a = [1,2,3];
a.unshift('a','b');    //5

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

代码语言:javascript
复制
[1,2,3].join();        //"1,2,3"
[1,2,3].join(",!~");//"1,!~2,!~3"

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

代码语言:javascript
复制
var a = [1,2,3];
a.valueOf();    //[1,2,3]

四、数组的最佳实践

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

代码语言:javascript
复制
var arr = ['item 1', 'item 2', 'item 3', ...];  
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

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

代码语言:javascript
复制
function indexOf(arr, item) {
	return [].indexOf.call(arr,item)
}
indexOf([ 1, 2, 3, 4 ], 3)

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

代码语言:javascript
复制
function sum(arr) {
 	return arr.reduce(function(pre,cur,ind,arr){
     	return pre+cur; 
 	})
}
sum([ 1, 2, 3, 4 ])

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

代码语言:javascript
复制
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 数组上进行操作

代码语言:javascript
复制
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,结果返回新的数组

代码语言:javascript
复制
function append(arr, item) {
    return arr.concat([item]);
}

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

代码语言:javascript
复制
function curtail(arr) {
    return arr.slice(1);
}
curtail([1, 2, 3, 4])

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

代码语言:javascript
复制
function truncate(arr) {
	return arr.slice(0,arr.length-1);
}
truncate([1, 2, 3, 4])

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

代码语言:javascript
复制
function prepend(arr, item) {
    return [item].concat(arr);
}
prepend([1, 2, 3, 4], 10)

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

代码语言:javascript
复制
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 中重复出现过的元素

代码语言:javascript
复制
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,结果返回新的数组

代码语言:javascript
复制
function square(arr) {
    return arr.map(function(x) {return x*x});
}
square([1, 2, 3, 4])
举报
领券