1.数组创建的两种方式:
var var1 = [1, 2, 'haah'];
var arr1 = new Array();//空数组
var arr2 = new Array(2);//长度为2,数组元素是空
var arr3 = new Array(2, 3, '杨哈哈');//数组长度为3,且元素固定
2.检测是否为数组instanceof
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
console.log(Array.isArray(arr));
3.添加数组元素
方法一:push在数组末尾进行增加
1.Push是在元数组末尾进行增加
var arr = [1, 2, 3];
arr.push(4, 'pink');//末尾添加元素
console.log(arr);
console.log(arr.push(4, 'pink'));//返回push完数组的长度
方法二:unshift在数组前面追加元素
arr.unshift('yanghaha');
console.log(arr);
console.log(arr.unshift(6, 6));//返回长度,同push
console.log(arr);
3.删除数组元素
方法一:pop删除末尾元素
arr.pop();//删掉最末尾,无参数
console.log(arr.pop());//返回的是删除的那个元素
console.log(arr);
方法二: shift删除开头元素
arr.shift();//无参
console.log(arr.shift());//返回的是删除的那个元素
console.log(arr);
该两种方法运行结果如下:
4.翻转、排序函数
arr1 = [1, 2, 3];
arr2 = [1, 5, 2, 7, 9, 3, 1];
arr1.reverse();
arr2.sort();
console.log(arr1);
console.log(arr2);
sort排序的弊端,它是从第一个数字开始比较的
var arr3 = [13, 4, 77, 1, 7];
console.log(arr3.sort());
sort弊端
解决:冒泡排序
arr3.sort(function (a, b) {
// return a - b;//升序
return b - a;//降序
})
console.log(arr3);
arr.indexOf('..')从前面开始查找返回该数组元素的下标,只满足第一个满足条件的索引,如果没有该元素返回-1
arr.lastIndexOf('..')从后面开始查找该元素返回下标,找不到返回-1
5.数组去重案例(部分面试)
核心算法遍历旧元素,拿旧数组查询新数组,在新数组中没出现过添加,出现过则不添加
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
console.log(unique(arr));
我的第一反应是立flag,用两重循环,j来遍历新数组
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
var newArray = [];
for (var i = 0; i < arr.length; i++) {
var flag = 0;
for (var j = 0; j <= newArray.length; j++) {
if (arr[i] == newArray[j]) {
flag = 1;
break;
}
}
if (!flag) {
newArray[newArray.length] = arr[i];
}
}
console.log(newArray);
6.数组转换成字符串
var arr5 = [1, 2, 3];
console.log(arr5.toString());//1,2,3
join分隔符,
console.log(arr5.join());//默认是逗号
console.log(arr5.join('-'));
console.log(arr5.join('&'));