javascript-data_tructures_and_algorithms
data tructures and algorithms for JavaScript
arithmetic operation
精度问题:
console.log(3+1.1) //输出4.1 |
如果计算精度不必像上面那样精确,可以格式化为固定精度:
print((3*1.1).toFixed(2)) //显示3.30 |
OOP (object-oriented programming)
构建一个检查银行账户对象的构造函数
function Checking(amount) { |
this关键字用来将方法和属性绑定到一个对象的实例上
function deposit(amount) { |
方法的互相引用
const bank = new Checking(500); |
Array
调用方法:
let arr = []; |
字符串生成数组:
split()
let str = "A is a cat"; |
浅复制和深复制:
let arr1 = [1,2,3,4,5]; |
这种行为就叫做浅复制,新数组依然指向原来的数组,如果需要改变新数组的值,则需要使用深复制的方案
function cp(arr1,arr2){ |
这种叫做深复制,将旧数组每一项的元素赋值到新数组上
Access function
查找元素:
indexOf()
let arr = ["a","b","c","d"]; |
如果数组中包含多个相同的元素,用indexOf()返回数组第一个值的索引
lastIndexOf()
let arr = ["a","b","b","c"]; |
如果数组中包含多个相同的元素,用indexOf()返回数组最后一个值的索引
数组的字符串表示:
join(),toString()
let name = ["jack","pack","john"]; |
这两个方法都返回一个包含数组所有元素的字符串,各元素之间用逗号分隔开。
实际上,当直接对一个数组使用print()函数时,系统会自动调用哪个数组的toString()方法。
由已知数组创建新数组:
concat():
let arr = [1,2,3,4]; |
Array.concat(Array),作为参数的数组拼接在发起者的数组上
splice():
let arr = ["a","b","c","d"]; |
该方法第一个参数是截取的起始索引,第二个参数是截取的长度。
splice方法还可以用于增加或移除元素
增加元素:
let nums = [1,2,3,7,8,9]; |
删除元素:
let nums = [1,2,3,100,200,300,400,4,5]; |
The variable element:
添加元素:
push() 从数组后面添加
unshift() 从数组头添加
删除元素:
pop() 从数组后面删除
shift() 从数组头删除
本质上就是栈的操作
数组排序:
reverse() 翻转数组元素顺序
sort()
let names = ["David","Mike","Cynthia","Clayton","Bryan","Raymond"]; |
sort()方法是按照字典顺序对元素进行排序的,因此它假定元素都是字符串类型。即使是Number类型也会转换成字符串类型在进行排序。对于数字的排序,会发生非常不友好的结果。
let arr = [1,3,2,11,6,100,21]; |
就像上面一样,是按照字符串的字典顺序进行排序的,解决方法是通过sort传入一个大小比较函数解决排序问题
function compare(num1,num2) { |
Lterator method
这些方法对数组中的每个元素应用一个函数,可以返回一个值、一组值或者一个新数组。
不生成新数组的迭代器方法:
forEach():
该方法接受一个函数作为参数,对数组中的每个元素使用该函数。