数据结构与算法-数组(Array)

栏目: 编程工具 · 发布时间: 5年前

内容简介:Javascript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。但是,这些数字索引在内部被转换为字符串类型,这是因为Javascript对象中的属性名必须是字符串。数组在javascript中只是一种特殊的对象,所以效率上不如其它语言中的数组高。javascript中的数组,严格来说应该称为对象,是特殊的javascript对象,在内部被归类未数组。由于Array在javascript中被当做对象,因此它有许多属性和方法可以在编程时使用。// number.length

Javascript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。但是,这些数字索引在内部被转换为字符串类型,这是因为Javascript对象中的属性名必须是字符串。数组在javascript中只是一种特殊的对象,所以效率上不如其它语言中的数组高。

javascript中的数组,严格来说应该称为对象,是特殊的javascript对象,在内部被归类未数组。由于Array在javascript中被当做对象,因此它有许多属性和方法可以在编程时使用。

1、创建数组

  1. var number = [];

// number.length = 0; 效率最高,推荐使用

  1. var number = [1, 2, 3, 4, 5];
// number.length = 5
  1. var number = new Array();
// number.length = 0
  1. var number = new Array(1, 2, 3, 4, 5);
// number.length = 5
  1. var number = new Array(10);
// number.length = 10
  1. 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
复制代码

由此可见把一个数组赋值给另一个数组时,只是为被赋值的数组增加了一个新的引用,当改变原引用的数值时新引用也会随之改变,这是浅复制

数据结构与算法-数组(Array)
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
复制代码

将原数组中的每一个元素都复制到新数组中,这是深复制。

数据结构与算法-数组(Array)

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私房菜

鸟哥的Linux私房菜

鸟哥 / 人民邮电出版社 / 2010-6-28 / 88.00元

本书是最具知名度的Linux入门书《鸟哥的Linux私房菜基础学习篇》的最新版,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口 shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系......一起来看看 《鸟哥的Linux私房菜》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具