JS-数组操作
ES5新增部分
var arr = [10, 20, 40, 50];
arr.forEach(function(item, index, arr) {
console.log(index, item);
console.log(arr);
});
//去重——集合、流等采用数组,IT领域也是不断完善理论罢了,其实质就是操作数组,增加方法——close()\append()
//所以:各个领域的本质相通性,不要被 “所谓的专业术语”高大上,唬住了!————Dorian君还是看得很透彻!
var arr1 = [10, 20, 40, 10, 20, 40, 50];
var res = [];
arr1.forEach(function(item, index, arr1) {
if (res.indexOf(item) === -1) {
res.push(item);
}
});
console.log(res);
//filter()——对原数组进行过滤,每次函数返回值为true对应组成
var res1 = arr1.filter(function(item, index, arr1) {
console.log(item);
return index % 2 === 0;
});
console.log(res1, arr1);
//map()
var res2 = arr1.map(function(item, index, arr1) {
return item - 5;
});
console.log(res2, arr1);
var sum = arr.reduce(function(prev, next, currIndex, arr1) {
// console.log(arr1);
console.log(prev + "--" + next + "--" + currIndex);
return next + prev;
});
console.log(sum);
console.log("===================");
//指定第二个参数,可以从0位置开始计算
var sum = arr.reduce(function(prev, next, currIndex, arr1) {
// console.log(arr1);
console.log(prev + "--" + next + "--" + currIndex);
return next + prev;
}, 0);
console.log(sum);
三大排序
【1】bubblSort
function bubbleSort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
}
【2】选择排序
for (var i = 0; i < arr.length - 1; i++) {
var index = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[index]) {
index = j;
}
}
var temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
【3】
数组自带API
//删除指定位置元素
console.log(arr.splice(1, 2));
console.log(arr);
//增加:将第二个参数设置为0,第三个参数为添加的值
console.log(arr.splice(1, 0, 100));
console.log(arr);
//替换:第二个参数为替换的个数,后面添加特换的个数
console.log(arr.splice(1, 2, 102, 101));
console.log(arr);
//插入操作
var arr = [1, 2, 3];
// 返回值:改变后的数组长度
console.log(arr.push(4, 5));
console.log(arr);
arr[3] = 3;
console.log(arr);
//unshift()
console.log(arr.unshift(-1, 0)); //返回数据长度
console.log(arr);
//删除操作
console.log(arr.pop());
console.log(arr);
console.log(arr.shift());
console.log(arr);
// slice(start,end)——截取数组
var res = arr.slice(2, 4);
slice(start) //从开始,默认到结束
//join()——拼接字符串,默认以“,”连接
var res1 = arr.join();
console.log(typeof(res1), res1);
var res2 = arr.join('&');
console.log(typeof(res2), res2);
//concat()——数组拼接
var array = [1, 2, 3];
var array1 = [4, 5, 6];
var array2 = [1, 2, 3, 8];
var result = array2.concat(array, 8008, array1, 1000, 1001);
console.log(array, array1, array2, result);
//reverse()——数组倒序,改变原数组的逆序
console.log(array.reverse(), array);
//splice 删除替换元素
// 第一个参数代表从第几位开始
// 第二个参数代表删除几个元素
// 第三个参数代表插入元素
var removed = myFish.splice(2, 0, "drum");
var removed = myFish.splice(2, 0, 'drum', 'guitar');