一、前言
看到标题,也许会说前端扯什么数据结构,写出页面完成交互不就ok了吗?实际上编程语言也有自己的数据结构,只是我们平时并没有过多的去关注。以下我们将来浅谈以下javascript中的数据结构--数组
二、为什么要学习数据结构
以我最近接触的几个项目来说,后端返回的数据稍有些复杂,需要做一些处理才能得到自己需要渲染的数据结构。作为前端开发人员,尤其在现在,必须有强大的数据结构算法能力,才能支撑整个业务的开发。
三、javascript数据类型
在说明数据结构之前,我们了解以下javascript都有哪些数据结构
原始类型:
Boolean、Null、Undefined、Number、String、Symbol
Object类型
除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”
四、数组
1.定义
数组是我们最常用也最熟悉的数据结构,它是如何定义的:一个储存元素的线性集合,元素可以通过索引开任意存取,索引通常是数字,用来计算元素之间的存储位置的偏移量。
emmmmmm.......
这样说好像和嗯晦涩难懂,简单说就是:使用单独的变量名来存储一系列的值
2.创造与读写
var number = []
var arr = [1, 2, 3]
var people = new Array()
var count = new Array(1, 2, 3)
var a = new Array(2)
var b = [1, null, 'apple'] //当然,数组里面的值不一定都是一样的
// length是数组长度,我们可以借助它来进行读
for (var i = 0; i < arr.length; i++) {
console.log(arr[i])
}
3.常用基本方法
方法 | 描述 | 事例 |
---|---|---|
concat() | 连接两个或更多的数组,并返回结果 | arr1.caoncat(arr2) |
join() | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 | arr.join(';') |
pop() | 删除并返回数组的最后一个元素 | arr1.pop() |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度 | arr.push(1) |
shift() | 删除并返回数组的第一个元素 | arr1.shift() |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 | arr.unshift(1) |
reverse() | 颠倒数组中元素的顺序。 | arr1.reverse() |
slice() | 从某个已有的数组返回选定的元素 | arr.slice(1, 2) |
sort() | 对数组的元素进行排序 | arr1.sort() |
splice() | 删除元素,并向数组添加新元素。 | arr.splice(1, 2) |
toString() | 连接两个或更多的数组,并返回结果 | arr1.toString() |
valueOf() | 返回数组对象的原始值 | arr.valueOf() |
indexOf() | 返回查找数组的位置,找不到-1 | arr.indexOf(1) |
4.迭代器方法
不产生新数组:
// forEach
function square(num) {
console.log(num)
}
var nums = [1, 2, 3, 4, 5]
nums.square(square)
//
产生新数组:
map(),filter()
function square(num) {
console.log(num)
}
var nums = [1, 2, 3, 4, 5]
nums.map(square)
array.filter(function(currentValue,index,arr), thisValue)
5.经典方法与例子
以上都是一些理论上的知识,比较简单易懂。但是实际上运用到业务中,就需要综合起来了。比如说数组去重、排序、甚至一些常见的面试题。无论怎么变化,我们只需要关注核心思路,怎么知道他们想等,怎么找到对应的索引,怎么删掉对应的值。
小结
此篇算只能算得上一个小笔记吧,虽然可能看起来比较简单,但是数组在我们日常开发中用的最多。所以了解好数组的一些基本操作,以及一些高级用法,将会给我们开发带来事半功倍的效果。
网友评论