斐波那契数组(首项和第二项都为1,其余的项是前两项之和)
- 题目:输出斐波那契数组的前20项:
var fb = []
fb[0] = 1
fb[1] = 1
for (var i = 2;i<20;i++){
fb[i] = fb[i-1]+fb[i-2]
}
console.log(fb)
- 初始化数组
// 初始化一个数组
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- 添加一个元素到数组的最后一项 ```javascript // 添加一个元素到数组的最后位置 // 方式一: numbers[numbers.length] = 10
// 方式二: numbers.push(11) numbers.push(12, 13)
alert(numbers)
---
- 添加一个元素到该数组的首项
```javascript
// 在数组首位插入一个元素
for (var i = numbers.length; i > 0; i--) {
numbers[i] = numbers[i-1]
}
numbers[0] = -1
alert(numbers) // -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13
// 通过unshift在首位插入数据
numbers.unshift(-2)
numbers.unshift(-4, -3)
alert(numbers) // -4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13
- 删除数组最后的元素, 可以使用pop()方法
// 删除最后的元素 numbers.pop() alert(numbers) // -4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12
- 移除首位 ```javascript // 删除首位的元素 for (var i = 0; i < numbers.length; i++) { numbers[i] = numbers[i+1] } numbers.pop() alert(numbers)
// 或者使用shift方法 numbers.shift() alert(numbers)
---
- 通过splice删除特定位置元素
```javascript
// 删除指定位置的几个元素
numbers.splice(5, 3)
alert(numbers) // -4,-3,-2,-1,0,4,5,6,7,8,9,10,11,12,13
- 上面的代码会删除索引为5, 6, 7位置的元素.
- 第一个参数表示索引起始的位置为5(其实是第6个元素, 因为索引从0开始的), 删除3个元素.
如果我们希望使用splice来插入数据呢?
// 插入指定位置元素 numbers.splice(5, 0, 3, 2, 1) alert(numbers) // -4,-3,-2,-1,0,3,2,1,4,5,6,7,8,9,10,11,12,13
上面的代码会从索引为5的位置开始插入数据. 其他数据依次向后位移.
- 第一个参数依然是索引值为5(第六个位置)
- 第二个参数为0时表示不是删除数据, 而是插入数据.
- 后面紧跟的是在这个位置要插入的数据, 可以是其他类型, 比如”a”, “b”, “c”.
如果我们希望使用splice来修改数据呢?
// 修改指定位置的元素 numbers.splice(5, 3, "a", "b", "c") alert(numbers) // -4,-3,-2,-1,0,a,b,c,4,5,6,7,8,9,10,11,12,13
上面的代码会从索引5的位置开始修改数据, 修改多少个呢? 第二个参数来决定的.
- 第一个参数依然是索引的位置为5(第六个位置)
- 第二个参数是要将数组中多少个元素给替换掉, 我们这里是3个(也可以使用3个元素来替换2个, 可以自己尝试一下)
- 后面跟着的就是要替换的元素.
数组的常见方法
- 数组合并 ```javascript // 数组的合并 var nums1 = [1, 2, 3] var nums2 = [100, 200, 300] var newNums = nums1.concat(nums2) alert(newNums) // 1,2,3,100,200,300
newNums = nums1 + nums2 alert(newNums) // 1,2,3,100,200,300
---
- 迭代方法
- every()方法
- every()方法是将数组中每一个元素传入到一个函数中, 该函数返回true/false.
- 如果函数中每一个元素都返回true, 那么结果为true, 有一个为false, 那么结果为false
- 判断一组元素中是否都包含某一个字符
```javascript
// 定义数组
var names = ["abc", "cb", "mba", "dna"]
// 判断数组的元素是否都包含a字符
var flag = names.every(function (t) {
return t.indexOf('a') != -1
})
alert(flag)
例题-数组去重
解析
function arrayUnique(target) {
var result = [target[0]];
var temp = {};
temp[target[0]] = true;
for (var i = 1, targetLen = target.length; i < targetLen; i++) {
if (typeof temp[target[i]] === 'undefined') {
result.push(target[i]);
temp[target[i]] = true;
}
}
return result;
}
这里使用了一个temp对象来保存出现过的元素,在循环中每次只需要判断当前元素是否在temp对象内即可判断出该元素是否已经出现过。