- 《数据结构与算法JavaScript描述》读书笔记之一
- 前两章为数组的方法复习
chapter-1 JavaScript编程环境和模型
语句
- JavaScript中的switch语句和其他编程语言的一个主要区别是:在JavaScript中,用来判断的表达式可以是任意类型,不仅限于整型;而C++和Java等一些语言就要求该表达式必须为整型
循环
- while和for的用法:
- 提供两种定义函数的方式:
- 一种有返回值,目的是得到返回值
- 一种没有返回值,也叫子程、void函数,目的是执行定义操作
- JavaScript中,函数的参数传递方式都是按值传递,没有按引用传递的参数。但是JavaScript中有保存引用的对象,比如数组(可以按引用传递)。
变量作用域
- JavaScript拥有的是函数作用域,含义是JavaScript中没有块级作用域(可以在编写for循环的时候假设有),ES6的let可以实现
递归
- 任何可以被递归定义的函数,都可以被改写外迭代式的程序
chapter-2 数组
定义
- 一个存储元素的线性集合(collection),元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。
- JavaScript的数组是一种特殊的对象(效率不如其他语言高),表示偏移量的索引是该对象的属性,索引可能是整数(内部转换为字符串类型,因为JavaScript对象中的属性名必须是字符串)
数组操作
创建
12345678910var numbers = [];// 创建numbers.length; // 长度var numbers = new Array(1,2,3,4,5);numbers.length; // 5var numbers = new Array(10); // 创建了一个长度为10的数组var numbers = 3;Array.isArray(numbers);// false 判断一个对象是否是数组// 字符串对象的split()方法也可以生成数组var sentence = 'the quick brown fox jumped over the lazy dog';words = sentence.split(' ');
整体操作
浅复制:新数组依然指向原来的数组
深复制:原数组中的每一个元素都复制一份到新数组中
存取函数
一组用来访问数组元素的函数
- indexOf 查找第一个匹配
- lastIndexOf 查找最后一个匹配
- join 返回字符串
- toString 转换字符串
- concat 合并多个数组创建新数组
- splice 起始索引、截取长度、添加的元素
- push,unshift 添加元素
- pop, shift 删除元素
- splice 添加元素
- reverse 翻转
- sort 排序
|
|
|
|
sort 说明
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
- 参考w3school:http://www.w3school.com.cn/jsref/jsref_sort.asp
迭代器方法
不生成新数组的迭代器方法
执行操作或返回一个值
- forEach
- every 接受一个返回值,数组的每个元素使用该函数,如果所有的元素,该函数均返回true,则该方法返回true
- some 接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回true,该方法返回true
- reduce 累加值,不断对累加值和数组中后续元素调用该函数,例如数组求和
- reduceRight123456789101112131415// some everyvar nums = [2,4,6,8,9];function isEven(num) {return num % 2 === 0;}nums.every(isEven);// falsenums.some(isEven);// true// reduce reduceRightvar nums = ['1','2','3','4','5','6','7','8','9'];function add(total, current) {return total + current;}nums.reduce(add);nums.reduceRight(add);
生成新数组的迭代器方法
- map 原有函数应用某个函数,返回新数组
- filter 传入一个返回值为boolean的函数,返回新数组(true)
|
|
二维多维数组
类似一种由行和列构成的数据表格
|
|