JavaScript:Array

一、定义

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

二、ECMAScript5新增方法

三、常用方法

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])


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋飛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值