Java Script中的数组

本文详细记录了JavaScript中数组的创建、访问、修改、查找、排序等基本操作及常用方法,包括数组的长度获取、indexOf()函数、forEach()函数、reverse()函数、sort()函数、push()、unshift()、shift()、pop()、splice()、slice()、concat()、join()、map()、reduce()等,并提供了实例代码演示。

任何一种语言数组都是比较重要的,其作为一种基础对象应用很多,如Java你肯定少不了集合(List,Map)这些。因此本篇主要记录JS的数组使用和常用方法。要点如下:

1,数组创建

两种方式:

var stu = new Array();
var stu1 = [];
这就和定义对象一样:
var cat = new Object();
var cat1 = {};
推荐用后者,比较简洁。如:
var score = [1, 2, 3];
数组里的东西可以是不同类型的,数组里面可以是基础类型也可以是对象或数组:
var array = [
    163,
    "netease",
    {color: "red"},
    [],
    true
];
console.log(array[0]);
console.log(array[2].color);
再来个:

2,length()函数,得到数组的长度
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
console.log(stu.length); // 3
stu = [];
console.log(stu.length); //0
通过stu[i]访问并修改第i个元素.
3,indexof()函数,如果能找到返回找到的索引,找不到返回-1,勇于判断一个元素在不在数组里
var tel = [101, 110, 139];
var index = tel.indexOf(101);
console.log(index);
4,forEach()函数
forEach 需要接受一个回调函数
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
var add5 = function(item, number, array){
    item.score += 5;
};
stu.forEach(add5);
console.log(stu[0].score);
这个回调对输入参数有要求,分别是当前的item,item的索引和整个array.forEach就会自动遍历每一行,然后将每一行都送给callback函数进行处理。

5,reverse()函数,将数组倒序
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.reverse();
console.log(stu[0].score);

6,array.sort()函数,该函数传入一个callback,非常类似java的排序
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
var bySocre = function(a, b){
    return b.score - a.score;
}
stu.sort(bySocre);
var print_callback = function(item, number, array){
    console.log(item.score);
}
stu.forEach(print_callback);
备注:
a,如果callback里返回false,则a排在b的前面。如果return的是b - a,则是从大到小排,反之是从小到大排。 
b,sort直接改变了原数组。
c,如果callback不传,则按照unicode码自小到大排序:
var names = ["yanzi", "gg", "ww"];
names.sort();
var print_callback = function(item, number, array){
    console.log(item);
}
names.forEach(print_callback);
7,array.push()
在已有数组末尾后面加元素,可以加多个。
8,array.unshift()
在数组的开始位置添加元素。
示例代码:
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.push({id:4, score:100});
stu.unshift({id:5, score:99});
var print_callback = function(item, number, array){
    console.log(item.id);
}
stu.forEach(print_callback);

9,array.shift() 返回第一个元素,同时在原数组里删除第一个元素。
10,array.pop() 返回最后一个元素,同时在原数组里删除最后一个元素。
11,array.splice(a, b, C)需要传入三个参数,分别是从位置a开始,删除b个元素,然后插入元素C,C可以是多个
示例代码:
var stu = [
    {id:1, score : 80},
    {id:2, score : 75},
    {id:3, score : 90},
];
stu.splice(1,1,{id : 5, score:100});
var print_callback = function(item, number, array){
    console.log(item.id);
}
stu.forEach(print_callback);
备注:如果splice第三个参数不传入,则只删除。如果第二个参数传0,则只插入,不删除。

总结:reverse,sort, push, unshift, shift, pop, splice都有一个共同特点,都改变了原来的数组。
12,array.slice(start, end)从索引start到end-1拷贝出来一份返回。如果end参数不传,则截取到最后一个位置。
13,array.concat(a, b):将数组a和数组b连接到一起。

14,array.join(a)对array每个元素用a拼接起来。如果什么都不传,默认用,号进行分割。

15,array.map()需传入一个回调,回调需要return,默认将return的东西push到一个新的array.
var scores = [80, 75, 90];

var addScore = function(item, index, array){
    return item + 5;
}
var scoresNew = scores.map(addScore);
var print_callback = function(item, number, array){
    console.log(item);
}
scoresNew.forEach(print_callback);

16,array.reduce()
需要一个callback作为参数,callback(preResult, item, index, array),看一个求和的例子.
var scores = [80, 75, 90];

var sum = function(preresult, item, number, array){
    return preresult + item;
}
var sum2 = scores.reduce(sum, 0);
console.log(sum2);

总结:slice, concat, join, map, reduce不会修改原数组。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值