数组

第三章 数组

以下是操作数组的常用方法

初始化数组

最方便的方式

let daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 
                 'Saturday'];

查询长度

daysOfWeek.length;

求斐波那契数列前20个数

const fibonacci = [];
  fibonacci[1] = 1;
  fibonacci[2] = 1;
  // 声明了数组

  for (let i = 3; i < 20; i++) {
     fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
  }

  for (let i = 1; i < fibonacci.length; i++) {
     console.log(fibonacci[i]);
  }

添加元素

末尾插入元素方法

平平无奇法

numbers[numbers.length] = 10;

push方法

numbers.push(11, 12);

开头插入元素

unshift方法

numbers.unshift(-1, -2);

删除元素

数组末尾删除元素

pop方法

numbers.pop();

数组删除开头元素

shift方法

numbers.shift();

任意位置添加或删除元素

splice方法

number.splice(5, 3, 2, 3, 4);
  • 第一个参数 插入元素的索引值
  • 第二个参数 删除元素的个数 不删填0
  • 第三个参数往后 添加到数组里的值

数组的核心方法

MsaEW5

Page 55

数组合并

concat方法

const zero = 0;
const positiveNumber = [1, 2, 3];
const negativeNumber = [-3, -2, -1];
let numbers = negativeNumber.concat(zero, positiveNumber);
console.log(numbers);
// -3, -2, -1, 0, 1, 2, 3

函数迭代

每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

every方法

every 作用是每一个numbers数组成员都能符合函数isEven就返回true 否则返回false

let result1 = numbers.every(isEven);
console.log(result1);

some方法

some 是numbers数组里有一个满足就会返回true 否则返回false

let result2 = numbers.some(isEven);
console.log(result2);

forEach方法

和for类似

numbers.forEach(x => console.log(x % 2 === 0));

map方法

JavaScript 还有两个会返回新数组的迭代方法。第一个是 map。

const myMap = numbers.map(isEven);

数组 myMap 里的值是:[false, true, false, true, false, true, false, true, false, true, false, true, false, true, false]。它保存了传入 map 方法的 isEven 函数的运行结果。这样就很容易知道一个元素是否是偶数。比如,myMap[0]是 false,因为 1 不是偶数;而 myMap[1]是 true,因为 2 是偶数。

filter方法

它返回的新数组由使函数返回 true 的元素组成。

const evenNumbers = numbers.filter(isEven); 

reduce方法

接收 4 个参数:上一个归并值、当前项、当前项的索引和数组本身。

let values = [1, 2, 3, 4, 5];
let sum = values.reduce((prev, cur, index, array) => prev + cur);
alert(sum); // 15 

排序元素

元素反转

numbers.reverse();

元素排序(按照字符串进行比较)

numbers.sort();

比较数字(如果没有指明 compareFunction ,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序)

numbers.sort((a, b) => a - b);

写一个比较函数

 let numbers = [12, 32, 43, 53, 22, 1];
  function compare(a, b) {
     if (a < b) {
        return -1;
     }
     if (a > b) {
        return 1;
     }
     return 0;
  }
  numbers.sort(compare);
  // sort方法接受compareFunction作为参数

在 b 大于 a 时,这段代码会返回负数,反之则返回正数。如果相等的话,就会返回 0。也就是说返回的是负数,就说明 a 比 b 小,这样 sort 就能根据返回值的情况对数组进行排序。

搜索

indexOf 方法

返回与参数匹配的第一个元素的索引

lastIndexOf方法

返回与参数匹配的最后一个元素的索引

ES5 findfindIndex方法

find返回第一个满足的值

没有返回undefined

findIndex返回第一个满足的索引

没有返回-1

ES7 includes方法

如果数组存在某个元素,返回true

如果数组不存在某个元素,返回false

输出数组为字符串

toString

把所有元素输出为字符串

join

把所有元素输出为以分隔符隔开

let numbers = [1, 2, 4, 5, 6, 7, 8, 9, 10];
console.log(numbers.join('-'));
上一篇:算法-----两数之和 II - 输入有序数组


下一篇:UVA10202 POJ2466 ZOJ1895 Pairsumonious Numbers【算术计算】