创建数组的两种方式
-
第三种内置对象 Array 数组内置对象
-
创建数组的两种方式
-
利用数组字面量[]
-
var arr = []; // 创建一个空数组 var arr1 = [1, 2, 3]; console.log(arr1[0]);
-
-
利用 new Array()
-
var arr2 = new Array(); // 创建了一个空的数组 var arr3 = new Array(5); // 这个5 表示数组长度为5 里面有5个空的数组元素 console.log(arr3); var arr4 = new Array(2, 3); // 等价于[2,3] 这样写表示里面有两个数组元素是2和3 console.log(arr4);
-
-
-
检测是否为数组的方法
-
instanceof 与 Array.isArray()
-
function reverse(arr) { // if (arr instanceof Array) { if (Array.isArray(arr)) { var newArr = []; for (var i = arr.length - 1; i >= 0; i--) { newArr[newArr.length] = arr[i]; } return newArr; } else { return 'error 这个参数要求必须是数组格式[1,2,3]' } } console.log(reverse([1, 2, 3])); //[3,2,1] console.log(reverse(1, 2, 3));
-
-
检测是否为数组
-
instanceof 运算符 它可以用来检测是否为数组
-
var arr = []; console.log(arr instanceof Array); var obj = {}; console.log(obj instanceof Array);
-
-
Array.isArray(参数) H5新增的方法 IE9以上版本才支持
-
var arr1 = []; console.log(Array.isArray(arr1)); var str = ''; console.log(Array.isArray(str));
-
-
-
添加删除数组元素的方法
-
添加数组元素
-
arr.push() 在我们数组的末尾 添加一个或者多个数组元素 push 推
-
var arr = [1, 2, 3]; // arr.push(4, '猪猪侠', '李知恩'); console.log(arr.push(4, '猪猪侠', '李慧珍')); // 长度 console.log(arr);
-
push 是可以给数组末尾追加新的元素
-
push()参数直接写 数组元素就可以了
-
push完毕之后,打印一下返回的结果是新数组的长度
-
原数组也会发生变化
-
-
arr.unshift 是可以给数组前面追加新的元素
-
console.log(arr.unshift('1', '猪猪侠')); // 长度 console.log(arr);
-
unshift 是可以给数组前面追加新的元素
-
unshift() 参数直接写数组元素就可以了
-
unshift() 完毕之后,打印一下返回的结果是新数组的长度
-
原数组也会发生变化
-
-
-
删除数组元素
-
arr.pop()
-
他可以删除数组的最后一个元素
-
console.log(arr.pop()); // 被删除的那个元素 console.log(arr);
-
pop 是可以删除数组的最后一个元素 记住一次只能删除一个元素
-
pop() 没有参数
-
pop() 完毕之后,返回的结果是 被删除的那个元素
-
原数组也会发生变化
-
-
arr.shift()
-
他可以删除数组的第一个元素
-
console.log(arr.shift()); // 被删除的那个元素 console.log(arr);
-
shift 是可以删除数组的第一个元素 记住一次只能删除一个元素
-
shift() 没有参数
-
shift() 完毕之后,返回的结果是 被删除的那个元素
-
原数组也会发生变化
-
-
-
案例
-
push 筛选数组
-
// 有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新的数组里面 var arr = [1500, 1200, 2000, 2100, 1800]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < 2000) { // newArr[newArr.length] = arr[i]; newArr.push(arr[i]); // 把满足条件的数组元素追加到新数组里面 } } console.log(newArr);
-
-
sort 排序
-
var arr1 = [1, 100, 12, 25, 38, 44, 55, 64, 75, 81, 91, 8, 9, 7, 5, 4, 3, 2, 6]; for (var i = 0; i < arr1.length; i++) { for (var j = 0; j < arr1.length - i - 1; j++) { if (arr1[j] > arr1[j + 1]) { var temp = arr1[j]; arr1[j] = arr1[j + 1]; arr1[j + 1] = temp; } } }
-
数组排序(冒泡排序)
var arr1 = [3, 40, 70, 1, 82, 100, 22, 2, 38, 44]; arr1.sort(); // 如果排序的数组元素都是个位数 直接arr1.sort就可以 console.log(arr1);
-
var arr2 = [3, 40, 70, 1, 82, 100, 22, 2, 38, 44]; arr2.sort(function(a, b) { return a - b; // 升序的顺序排列 // return b - a; // 降序的顺序排列 }); // 如果是双位数或者更多位数需要加上function console.log(arr2);
-
-
reverse 数组翻转
-
var arr = ['关羽', '张飞', '赵云']; var newArr = [] for (var i = arr.length-1; i >= 0; i--) { newArr[newArr.length] = arr[i] } console.log(newAee) var arr = ['关羽', '张飞', '赵云']; arr.reverse(); console.log(arr);
-
-
获取数组元素索引号的方法
-
获取数组元素索引号的方法 arr.indexOf(数组元素) i 作用就是返回该数组元素的索引号 从前面开始查找
-
它只返回第一个满足条件的索引号
-
它如果在该数组里面找不到元素 则返回的就是 -1
-
var arr = ['关羽', '张飞', '赵云', '刘备', '赵云']; console.log(arr.indexOf('张飞')); // 1 console.log(arr.indexOf('赵云')); // 2 console.log(arr.indexOf('曹操')); // -1
-
-
返回数组元素索引号的方法 lastIndexOf(数组元素) 作用就是返回该数组元素的索引号 从后面开始查找
-
var arr = ['关羽', '张飞', '赵云', '刘备', '赵云']; console.log(arr.lastIndexOf('赵云')); // 4 console.log(arr.lastIndexOf('姜维')); // -1
-
数组去重
-
数组去重 ['c','a','z','a','x','a','x','c','b']要求去除数组中的重复元素
-
目标:把旧数组里面不重复的元素选取出来方法新数组中,重复的元素只保留一个,放到新数组中去重
-
核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加
-
我们怎么知道该元素没有存在?利用 新数组.indexOf(旧数组元素) 如果返回是-1就说明新数组里面没有该元素
-
封装一个去重的函数 unique() 独一无二的函数 [c,a,z,x,b]
-
function unique(arr) { if (arr instanceof Array) { var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) === -1) { // newArr[newArr.length] = arr[i]; newArr.push(arr[i]); } } return newArr; } else { return '请输入数组形式'; } } var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']); console.log(demo); var demo1 = unique(['关羽', '张飞', '李逵', '张三', '魏军', '关羽', '李逵', '张三']); console.log(demo1);
-
-
数组转换为字符串
-
之前的方法
-
var arr = [1, 2, 3, 4, 5]; var str = ''; for (var i = 0; i < arr.length; i++) { str += arr[i]; } console.log(str)
-
-
arr.toString()
将我们的数组转换为字符串-
var num = 100; console.log(num.toString()); var arr = [1, 2, 3]; console.log(arr.toString());
-
-
arr.join('分隔符')
加入-
var arr1 = ['red', 'green', 'blue']; console.log(arr1.join()); console.log(arr1.join('')); console.log(arr1.join('-')); console.log(arr1.join('&'));
-
-
arr1.concat(arr2)
拼接两个或多个数组 不影响原数组 返回一个新的数组 这个不会影响原来数组-
var arr1 = ['关羽', '张飞', '刘备']; var arr2 = ['赵云', '马超', '姜维']; var arr3 = [1, 2, 3, 4, 5, 6]; var arr4 = [7, 8, 9, 10, 11]; console.log(arr1.concat(arr2)); console.log(arr3.concat(arr4)); console.log(arr1); console.log(arr2); console.log(arr2.concat(arr3)); console.log(arr3.concat(arr2)); console.log(arr2); console.log(arr3);
-
-
arr.slice(begin,end)
数组截取[begin,end)
返回的结果是被截取的新数组 这个不会影响原来数组-
var arr1 = ['曹操', '曹丕', '曹植', '曹彰', '曹洪', '曹真']; console.log(arr1.slice(1, 4)); console.log(arr1); //5. 数组删除 splice(第几个开始,要删除的个数) 返回被删除的新数组 这个会影响原来数组 var arr2 = ['孙坚', '孙权', '孙策', '孙亮', '孙鲁班']; console.log(arr2.splice(2, 3)); console.log(arr2);
-