世界上很多的困难,只是思维上设限。
数组翻转
数组翻转有很多方法,这里总结俩种:
- 原生方法 reverse
-
使用循环交换数组前后元素
/** * arr = [1,2,3,4,5,6,7] * 数组交换元素 即第一个跟最后一个 第二个跟倒数第二个... * 0 arr.length - 1 - 0 * 1 arr.length - 1 - 1 * 2 arr.length - 1 - 2 * 总共交换次数 为 arr.length % 2 取余是为了防止个数为奇数 * 据此可以写出函数 **/ var arr = [1,2,3,4,5,6,7]; for(var i = 0, leng = arr.length % 2; i < leng; i += 1) { var temp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; }
数组去重
数组去重也总结俩种方法
- 使用
Set
结构,es6
新语法中的Set
数据结构有着天然的去重性,不允许重复数据的存在,所以我们可以这样子操作
```javascript
var arr = [1,2,1,4,3,5,6,2];
arr = new Set(arr);
```
set.png
-
使用循环去重
/* * 方法: * 首先声明一个新数组,插入原数组的第一项,然后依次用原数组的每一项与新数组的每一项比较,如果相同就跳出循环不处理,不同就在比较完新数组的每一项之后插入新数组 */ var arr = [2,3,5,6,1,2,98,5,2]; var t = []; t.push(arr[0]); for(var i = 0, leng = arr.length; i < leng; i += 1) { for(var j = 0, lengs = t.length; j < lengs; j += 1) { if(arr[i] == t[j]) { // 如果新数组中存在与原数组相同的值,就跳出此次循环比较下一个数 break; } if(j == t.length - 1) { // 如果比较到新数组的最后一项都没有相同的值,就将该值插入新数组 t.push(arr[i]); } } } console.log(t);
当然,比较的时候还以结合使用indexOf
或者 includes
来简化操作
1. indexOf
- includes
网友评论