《JavaScript数据结构与算法》

84 阅读2分钟

第一章 简介

  • [p7] document.write() 可以直接把值写到页面上
  • [p11] 对象的值始终为true,即使空对象也是如此。
  • [p19] 断点:继续执行、进入方法的调用、跳至下一行代码、重新执行、停止执行。

第二章 ES&TS概述

  • [p29] 在ES5中,我们可以使用apply()函数把数组转化为参数。在ES6中,可以用展开运算符(...)。

  • [p32] 尽管JavaScript中声明类的新方式所用的语法和java、c++等其他编程语言类似,但是JavaScript面向对象编程还是基于原型实现的。

  • [p35] 只有一个成员时,可以使用export default导出,这时的导入import不需要用{}。使用export导出多个成员时,import引入时需要放在{}里。

  • [p40] ts有类型推断机制,会根据为变量赋的值自动给该变量设置一个类型。

    • 那么,什么时候需要给变量设置类型呢?
    • 如果声明了一个变量,但没有设置其初始值,推荐为其设置一个类型。
    • 如果没有为变量设置类型,他的类型会被自动设置为any,意思是可以接收任何值。
  • [p42] 代码补全以及类型和错误检查只在编译时是可用的。

第三章 数组

  • 数组及方法

  • 数组是最简单的数据结构。

  • 我们应该尽量用数组存储同一种类型的值。

  • [p47] 在js中,数组是一个可修改的对象。如果添加元素,他就会动态增长。在c和java里,要决定数组的大小,想要添加元素就要创建一个新的数组。

  • [p49] 从数组开头删除元素

  • 通过push和pop可以模拟栈;通过unshift和shift可以模拟队列。

  • 使用类型数组处理二进制数据

let numbers = ['zero','one','two','three','four'];
// iterator:返回一个包含数组键值对的迭代器对象。所有迭代完后会返回undefined。
  let iterator = numbers[Symbol.iterator]();
  console.log('@@@@@@@@@@@@@');
  console.log(iterator);
  // 返回[index, value]的value。
  console.log(iterator.next().value); // zero
  console.log(iterator.next().value); // one
  console.log('@@@@@@@@@@@@@');
// for...of
  for(const n of iterator) {
    console.log(n);
  }

// entries
  let myEntries = numbers.entries();
  console.log('************');
  console.log(myEntries);
  // 返回[index, value]
  console.log(myEntries.next().value); // [0, 'zero'] 
  console.log(myEntries.next().value); // [1, 'one']
  console.log('************');

// keys
  let myKeys = numbers.keys();
  console.log('$$$$$$$$$$$');
  console.log(myKeys);
  // 返回{value: index, done: boolean(是否完成迭代)}  =》 {value: undefined, done: true}
  console.log(myKeys.next()); // { value: 0, done: false }
  console.log(myKeys.next()); // { value: 1, done: false }
  console.log('$$$$$$$$$$$');

// from: 根据已有数组创建新数组
  let numbers2 = Array.from(numbers);
  let numbers3 = Array.from(numbers, x => x%2 === 0);
  console.log('numbers2', numbers2);
  console.log('numbers3', numbers3);

// Array.of: 创建一个新数组
  let numbers4 = Array.of(1,2);
  let number4Copy = Array.of(...numbers4);

// fill: 填充
  let numbers5 = [0,1,2,3];
  numbers5.fill(9,1,3);
  console.log('numbers5',numbers5);
  // 创建并初始化数组时很好用
  let arr = Array(6).fill(1);

// copyWithIn: 复制数组中一系列元素到同一数组的起始位置
  let array = [0,1,2,3,4,5]
  console.log(array.copyWithin(0,3,5));