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

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

内容简介: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)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning iPhone and iPad Web Apps

Beginning iPhone and iPad Web Apps

Chris Apers、Daniel Paterson / Apress / 2010-12-15 / USD 39.99

It seems that everyone and her sister has developed an iPhone App—everyone except you, the hard-working web professional. And now with the introduction of the iPad, you may even feel farther behind. B......一起来看看 《Beginning iPhone and iPad Web Apps》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具