第2章 JavaScript数组
2.1 在数组中搜索
indexOf()、lastIndexOf()
1 | var animals = new Array('dog', 'cat', 'seal', 'elephant', 'walrus', 'lion'); |
- findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
1 | var nums = [2, 4, 199, 80, 400, 30, 90]; |
2.2 用concat()和apply()将一个二维数组扁平化
- concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
arrayObject.concat(arrayX,arrayX,......,arrayX)
1 | var fruitarray = []; |
- apply()与call()的区别
- 如何理解和熟练运用js中的call及apply?
obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);
- call() & apply(),动态改变this
1 | function add(a, b) { |
- arguments装换为数组, 返回的是数组,但是arguments本身保持不变
1 | var arg = [].slice.call(arguments); |
- 借用别人的方法
1 | var foo = { |
- 实现继承
1 | var Student = function(name, age, high) { |
- 封装对象保证this的指向
1 | var _this = this; |
2.3 删除或替换数组元素
1 | var animals = new Array('dog', 'cat', 'rabbit', 'pig', 'apple'); |
2.4 提取一个数组中的一部分
- 不更改原数组,使用slice()
1 | var animals = new Array('dog', 'cat', 'rabbit', 'pig', 'apple'); |
2.5 对每一个数组元素应用一个函数
1 | var charSets = ["ab", "bb", "cd", "ab", "cc", "ab", "dd", "ab"]; |
2.6 使用forEach()和call()遍历querySelectorAll()的结果
- querySelectorAll()
- 可以将forEach()强制和一个NodeList一起使用
1 | var cells = document.querySelectorAll('td + td'); |
2.7 对数组中的每个元素执行一个函数并返回一个新数组
- 将一个十进制的数组转化为新的等价的十六进制数组
- map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
- 与forEach()不同,不会修改原数组,但是必须返回一个值
1 | var decArray = [23, 3, 24, 45, 500, 9, 70]; |
2.8 创建一个过滤后的数组
- filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
1 | var charSet = ['**', 'bb', 'cc', '**', 'cd']; |
2.9 验证数组内容
- 使用Array every()方法来检查每个元素是否符合给定的条件
- some() 方法确保至少某些元素符合该条件
- 区别:every()方法只要函数返回一个false值,处理就会结束,而some()方法会继续测试每个元素,直至返回true,此时,不再验证其他元素,即可返回ture
1 | function testValue(element, index, array) { |
2.10 使用一个关联数组来存储表单元素名和值
- keys() 方法返回一个新的Array迭代器,它包含数组中每个索引的键。
1 | var elemArray = {}; |
待续~