数组常见方法:
concat() 连接两个或多个数组 并返回结果
let arr1 = [1,2];
let arr2 = [1,2];
arr1.concat(arr2);
every() 对数组的每一项运行给定函数 如果该函数对于每一项都返回true,则返回true 否则 false
let names = ['abc', 'cd','ac']; // 可以通过every() 判断数组每一项是否包含某个字符
let flag = names.every(function (t) {
return t.indexOf('a') != -1;
})
filter() 对数组的每一项运行给定函数 返回该函数会返回true的项所组成的数组
var a = [1,2,3,4]
a.filter((item) => {return item > 2}) // [3,4]
forEach() 对数组的每一项运行给定函数,无返回值
names.forEach(function (t) {
console.log(t); // 遍历数组
})
join() 连接所有数组元素 使之成为字符串
var a = [1,2,3]
a.join('') // '123'
a.join('+') // '1+2+3'
map() 遍历数组元素 并对其变换 返回变换后的数组
indexOf() 返回第一个与给定参数相等的元素的索引
lastIndexOf() 返回与给定参数相等的元素的最大索引
reverse() 反转数组元素
slice() 传入索引值 将数组里对应索引范围的元素作为新数组返回
some() 对数组中的每一项运行给定函数 如果任一项返回true 结果为true 迭代结束
sort() 按字母顺序排序
toString() 将数组作为字符串返回
valueOf() 将数组作为字符串返回
var numbers = [1,2,3];
// 求和 pre的值已知发生变化 函数式编程
var total = numbers.reduce(function (pre, cur) {
return pre + cur;
})
排序算法
冒泡排序:每次循环将最大的冒泡到一端
var a = [14,1,6,2,77,3,9,34]
function bable(arr) {
var temp
for(var i = 0; i < arr.length; i++) {
for(var j = 0; j < arr.length - i; j++) {
if(arr[j] > arr[j+1]) {
[arr[j], arr[j+1]] = [arr[j+1], arr[j]]
}
}
}
return arr
}
bable(a)
插入排序
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
function insertionSort(arr) {
var len = arr.length;
var preIndex, current;
for (var i = 1; i < len; i++) {
preIndex = i - 1; // 有序部分的尾
current = arr[i]; // 无序的首
while(preIndex >= 0 && arr[preIndex] > current) {
// 有序的尾 > 无序的首时
// 有序部分加1 且其值为原有序部分的尾
arr[preIndex+1] = arr[preIndex];
// 退回一个位置 再次比较 【寻找有序部分的合适位置】
preIndex--;
}
// 找到了合适位置 插入该无序元素
arr[preIndex+1] = current;
}
return arr;
}
快速排序:
function quickSort(arr) {
if(arr.length < 2) return arr
// 取基点
var middle = Math.floor(arr.length / 2)
var middleData = arr.splice(middle, 1)[0]
var left = []
var right = []
for(var i = 0; i < arr.length; i++) {
if(arr[i] < middleData) left.push(arr[i])
else right.push(arr[i])
}
return quickSort(left).concat([middleData], quickSort(right))
}
判断回文字符串
function isHuimen(s) {
return s === s.split('').reverse().join('')
}
数组去重
var s = new Set(arr)
var a = [...s]
广义去重 (自己取的名字,哈哈)
var arr = [1,2,1,21,2,2,1,4,5, 'ss', 'ss', 'ee']
var o = {}
arr.forEach((item, index) => {o[item]=item})
arr.length = 0
for(var i in o) {arr.push(o[i])}