内容简介:Javascript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。但是,这些数字索引在内部被转换为字符串类型,这是因为Javascript对象中的属性名必须是字符串。数组在javascript中只是一种特殊的对象,所以效率上不如其它语言中的数组高。javascript中的数组,严格来说应该称为对象,是特殊的javascript对象,在内部被归类未数组。由于Array在javascript中被当做对象,因此它有许多属性和方法可以在编程时使用。// number.length
Javascript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。但是,这些数字索引在内部被转换为字符串类型,这是因为Javascript对象中的属性名必须是字符串。数组在javascript中只是一种特殊的对象,所以效率上不如其它语言中的数组高。
javascript中的数组,严格来说应该称为对象,是特殊的javascript对象,在内部被归类未数组。由于Array在javascript中被当做对象,因此它有许多属性和方法可以在编程时使用。
1、创建数组
- var number = [];
// number.length = 0; 效率最高,推荐使用
- var number = [1, 2, 3, 4, 5];
// number.length = 5
- var number = new Array();
// number.length = 0
- var number = new Array(1, 2, 3, 4, 5);
// number.length = 5
- var number = new Array(10);
// number.length = 10
- var objects = [1, 'wqh', false, null];
// 数组中的元素不必是同一种数据类型,这一点和很多编程语言不同。
2、判断数组-Array.isArray()
Array.isArray()判断一个对象是否是数组。
var number = 10; var arr = [7, 8, 9]; Array.isArray(number); // false Array.isArray(arr); // true 复制代码
3、读写数组
使用[]操作符将数据赋值给数组
var nums = [] for (var i = 0; i < 10; i++) { nums[i] = i; } 复制代码
使用[]操作符读取数组中的元素
var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for (var i = 0; i < nums.length; i++) { console.log(nums[i]) } 复制代码
4、字符串生成数组-split()
调用字符串对象的split()方法。
var paragraph = 'my name is wuQinHao' var wordsArray = paragraph.split(' ') console.log(wordsArray) // ["my", "name", "is", "wuQinHao"] 复制代码
5、浅复制与深复制
var nums = [1, 2, 3, 4, 5] var copyNums = nums console.log(copyNums) // [1, 2, 3, 4, 5] nums[0] = 100 console.log(copyNums[0]) // 100 复制代码
由此可见把一个数组赋值给另一个数组时,只是为被赋值的数组增加了一个新的引用,当改变原引用的数值时新引用也会随之改变,这是浅复制
var nums = [1, 2, 3, 4, 5] var copyNums = [] for (var i = 0; i < nums.length; i++) { copyNums[i] = nums[i] } console.log(copyNums) // [1, 2, 3, 4, 5] nums[0] = 100 console.log(copyNums[0]) // 1 复制代码
将原数组中的每一个元素都复制到新数组中,这是深复制。
6、查找元素-indexOf()
indexof用来查找传进来的参数在目标数组中是否存在。如果目标数组包含该参数,就返回该元素在数组中的索引,如果不包含,就返回-1
var names = ['www', 'qqq', 'hhh'] var isHave = names.indexOf('hhh') var noHave = names.indexOf('w') console.log(isHave) // 2 console.log(noHave) // -1 复制代码
7、数组转为字符串-join(),toString()
var names = ['wu', 'qin', 'hao', 1, true, null, undefined] var nameString1 = names.join() var nameString2 = names.toString() console.log(nameString1) console.log(nameString2) // wu,qin,hao,1,true, , // wu,qin,hao,1,true, , 复制代码
8、合并多个数组创建一个新数组-concat()
var arr1 = ['wu', 'qin', 'hao'] var arr2 = [1, 2, 3] var arrConcat1 = arr1.concat(arr2) var arrConcat2 = arr2.concat(arr1) console.log(arrConcat1) // ["wu", "qin", "hao", 1, 2, 3] console.log(arrConcat2) // [1, 2, 3, "wu", "qin", "hao"] 复制代码
9、截取一个数组的子集创建一个新数组-splice()
splice()方法从现有数组里截取一个新数组,该方法的第一个参数是截取的起始索引,第二个参数是截取的长度。
var arr1 = ['wu', 'qin', 'hao', 1, 2, 3] var arr2 = arr1.splice(0, 3) console.log(arr2) // ["wu", "qin", "hao"] 复制代码
10、数组操作
push() // 末尾添加元素 unshift() // 开头添加元素 pop() // 末尾删除元素 shift() // 开头删除元素 splice() // 中间位置添加和删除元素 reverse() // 数组元素顺序颠倒排序 sort() // 按照字典顺序对字符串数组排序 复制代码
11、迭代器方法
迭代器就是对数组中的每个元素应用一个函数,可以返回一个值,一组值,或一个新数组
一、不生成新数组的迭代器方法
1.forEach()
接受一个函数作为参数,对数组中的每个元素使用该函数,没有返回值。
var nums = [1, 2, 3, 4, 5] nums.forEach((item) => { var a = item * item console.log(a) }) // 1 4 9 16 25 复制代码
2.every()
接受一个返回值为Boolean类型的函数,对数组中的每个元素使用该函数,如果对于所有的元素,改函数均返回true, 则该方法返回true。
var nums = [1, 2, 3, 4, 5] var even = nums.every((item) => { return item % 2 === 0 }) console.log(even) // false var nums2 = [2, 2, 2, 2, 2] var even2 = nums2.every((item) => { return item % 2 === 0 }) console.log(even2) // true 复制代码
3.some()
接受一个返回值为Boolean类型的函数,只要有一个元素使得该函数返回true,则该方法就返回true。
var nums = [1, 2, 3, 4, 5] var someEven = nums.some((item) => { return item % 2 === 0 }) console.log(someEven) // true 复制代码
4.reduce()
接受一个函数,返回一个值
var nums = [1, 2, 3, 4, 5] var sum = nums.reduce((total, current) => { return total + current }) console.log(sum) // 15 var words = ['my', 'name', 'is', 'wuqinhao'] var sentence = words.reduce((total, current) => { return total + current }) console.log(sentence) // mynameiswuqinhao 复制代码
5.reduceRight()
与reduce不同,从右到左执行
var words = ['my', 'name', 'is', 'wuqinhao'] var sentence = words.reduceRight((total, current) => { return total + current }) console.log(sentence) // wuqinhaoisnamemy 复制代码
以上所述就是小编给大家介绍的《数据结构与算法-数组(Array)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
鸟哥的Linux私房菜
鸟哥 / 人民邮电出版社 / 2010-6-28 / 88.00元
本书是最具知名度的Linux入门书《鸟哥的Linux私房菜基础学习篇》的最新版,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口 shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系......一起来看看 《鸟哥的Linux私房菜》 这本书的介绍吧!