第三章 数组
以下是操作数组的常用方法
初始化数组
最方便的方式
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 find
和findIndex
方法
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('-'));