@Wangww0925
2019-08-07T07:53:36.000000Z
字数 9235
阅读 315
js-笔记
数组值的有序集合
每个值叫做数组的元素
数组的元素可以是任何类型
var arr = [100,'abc',true,null,undefined,{username:'小毛'},[1,2,3]];
每个元素在数组中都有一个位置,用数字表示
称为数组的下标(索引)数组的索引是从 0 开始的,索引的最大值为2^32-2 4294967294个元素
注意:只计算非负整数
var array=[]; // 给数组添加元素array[0] = ['a'];array[-1] = ['1'];array['name'] = ['www'];console.log(array); // 返回 [Array[1], -1: Array[1], name: Array[1]]console.log(array.length); // 返回 1
var arr = [1,2,3,4];console.log(arr); // 返回[1,2,3,4]var arr1 = []; // 声明一个空数组console.log(arr1); // 返回[]
1. var array = new Array();console.log(array); // 返回[]2. var array1 = new Array('a','b','c');console.log(array1); // 返回['a','b','c']3. var array2 = new Array(10,20,30);console.log(array2); // 返回[10,20,30]4. var array3 = new Array(3); 此时3是数组的长度console.log(array3); // 返回[],是稀疏数组document.write(array3); // 返回[,,]
var newArr = ['a','b','c','d'];console.log(newArr[3]); // 返回 d// 特殊情况,使用数字类型的字符串访问数组console.log(newArr[3]); // 返回 dconsole.log(newArr['3']); // 返回 d,字符串访问数组会自动转换
var newArr = ['a','b','c','d'];newArr[0] = 'www'; // 将a修改成wwwconsole.log(newArr); // 返回["www", "b", "c", "d"]
var arr = [];arr[0] = 'a';arr[1] = 'b';console.log(arr); // 返回['a','b']
1、创建的时候出现
var arr1=new Array(4);console.log(arr1); // 返回 ,,,,var arr2 = [,,'a',,,];console.log(arr2); // 返回 ,,a,,
2、添加元素的时候索引太大
var arr3 = [];arr3[0] = 'a';arr3[1] = 'b';arr3[5] = 'c';console.log(arr3); // 返回 a,b,,,,c
3、使用delete删除数组元素造成稀疏数组
var arr4 = [1,2,3,4,5];delete arr4[2];delete arr4[3];console.log(arr4); // 返回 1,2,,,5console.log(arr4[2]); // 返回 undefined,删除掉的元素变成undefined
思路:定义一个新的数组,使用push()将旧数组中不是undefined的元素添加到新数组中
var arr = ['a','b',,,'c'];var newArr = [];for(var i = 0; i < arr.length; i++){if(arr[i] != undefined){// newArr[i] = arr[i]; // 不能直接赋值newArr.push(arr[i]); // push在数组的后面添加元素}}console.log(newArr); // 返回 ['a','b','c']/** push过程:* []* ['a']* ['a','b']* ['a','b','c']*/
写在 数组的方法 -> splice()
注意: typeof [1,2,3] // 返回 object,不能用于判断
console.log(Array.isArray([])) // 返回trueconsole.log(Array.isArray(1000)); // 返回false
var array = ['a','b','c'];function getBool(index,arr){// 当index值和arr不存在、arr不是数组、arr数组长度小于1时,结束函数if(index == undefined || arr == undefined || !Array.isArray(arr) || arr.length < 1){alert('请传入正确的参数');return;}// 当数组中的值等于index值时,返回true并结束函数for(var i = 0; i<arr.length; i++){if(arr[i] === index){return true;}}return false;}console.log(getBool('a',array)); // 返回 true; a在数组中console.log(getBool('d',array)); // 返回 false; d不在数组中
如果存在返回下标(索引),如果不存在返回-1
var arr = ['a','b','c',1,2,3];console.log(arr.indexOf('a')); // 返回 0console.log(arr.indexOf(2)); // 返回 4console.log(arr.indexOf('d')); // 返回 -1
var arr = ['a','b','c'];arr[3] = 'd';console.log(arr); // 返回 ['a','b','c','d']
var arr = ['a','b','c'];arr[arr.length] = 'd';console.log(arr); // 返回 ['a','b','c','d']
注意: push() 有返回值的,返回新数组长度
var arr = ['a','b','c'];var leng = arr.push('w','ww');console.log(arr); // 返回 ["a", "b", "c", "w", "ww"]console.log(leng); // 返回 5,新数组长度
注意: unshift() 有返回值,返回新数组长度
var arr = ['a','b','c'];var len = arr.unshift('www');console.log(arr); // 返回 ['www','a','b','c']console.log(len); // 返回 4
注意: 有返回值,返回被删除的元素
var arr = ['a','b','c'];var len = arr.pop();console.log(arr); // 返回 ['a','b']console.log(len); // 返回 c
注意: 有返回值,返回被删除的元素
var arr = ['a','b','c'];var lent = arr.shift();console.log(arr); // 返回 ['b','c']console.log(lent); // 返回 a
var arr = ['大毛','二毛','三毛','四毛'];arr[-1] = 'abc';arr['name'] = '曹操';console.log(arr); // 返回 ["大毛", "二毛", "三毛", "四毛", -1: "abc", name: "曹操"]console.log(arr[-1]); // 返回 abcfor(var i = 0; i < arr.length;i++){console.log(arr[i]); // 返回 大毛 二毛 三毛 四毛}
var arr = ['大毛','二毛','三毛','四毛'];arr[-1] = 'abc';arr['name'] = '曹操';console.log(arr); // 返回 ["大毛", "二毛", "三毛", "四毛", -1: "abc", name: "曹操"]console.log(arr[-1]); // 返回 abcfor(var i in arr){console.log(i); // 返回 0 1 2 3 -1 name;i是数组中所有的下标,包括特殊下标console.log(arr[i]); // 返回 大毛 二毛 三毛 四毛 abc 曹操}
var arr = ['大毛','二毛','三毛','四毛'];arr[-1] = 'abc';arr['name'] = '曹操';console.log(arr); // 返回 ["大毛", "二毛", "三毛", "四毛", -1: "abc", name: "曹操"]console.log(arr[-1]); // 返回 abcarr.forEach(function(x){console.log(x); // 返回 大毛 二毛 三毛 四毛; x是数组的每一个元素})
var arr = ['大毛','二毛','三毛','四毛'];arr[-1] = 'abc';arr['name'] = '曹操';console.log(arr); // 返回 ["大毛", "二毛", "三毛", "四毛", -1: "abc", name: "曹操"]console.log(arr[-1]); // 返回 abcvar array = [1,2,3,,,,,5,6,7];for(var i = 0; i < array.length; i++){console.log(array[i]); // 返回 1 2 3 undefined undefined undefined undefined 5 6 7}for(var i in array){console.log(array[i]); // 返回 1 2 3 5 6 7;忽略掉没有内容的索引}
默认使用,连接
var arr = ['a','b','c'];console.log(arr.join()); // 返回 a,b,cconsole.log(arr.join('--')); // 返回 a--b--cconsole.log(arr.join('')); // 返回 abc
var arr = [23,21,3,4,12,15];console.log(arr.toString()); // 返回 23,21,15,12,4,3console.log(arr); // 返回 [23, 21, 3, 4, 12, 15]
var arr1 = ['a','b'];var arr2 = ['1','2'];console.log(arr1.concat(arr2)); // 返回 ["a", "b", "1", "2"]console.log(arr2.concat(arr1)); // 返回 ["1", "2", "a", "b"]console.log(arr2.concat(arr1,[3,4],[5,6])); // 返回 ["1", "2", "a", "b", 3, 4, 5, 6]console.log(arr1.concat(1,2,3)); // 返回 ["a", "b", 1, 2, 3]console.log(arr1.concat(1,2,[4,5,6])); // 返回 ["a", "b", 1, 2, 4, 5, 6]
var arr = ['a','b','c','123'];arr.reverse();console.log(arr); // 返回 ["123", "c", "b", "a"]
需要传入匿名函数
默认按照ASCII码,按位比较
var arr1 = [23,21,3,4,12,15];console.log(arr1.sort()); // 返回 [12, 15, 21, 23, 3, 4]var arr2 = ['ab','c','ad','d'];console.log(arr2.sort()); // 返回 ["ab", "ad", "c", "d"]
arr.sort(function(a,b){return a-b;})
例:
var arr1 = [23,21,3,4,12,15];arr1.sort(function(a,b){return a-b;})console.log(arr1); 返回[3, 4, 12, 15, 21, 23]
arr.sort(function(a,b){return b-a;})
例:
var arr1 = [23,21,3,4,12,15];arr1.sort(function(a,b){return b-a;})console.log(arr1); 返回[23, 21, 15, 12, 4, 3]
var arr = ['a','b','c','123','aa','bb'];console.log(arr.slice(2,5)); // 返回 ["c", "123", "aa"];截取部分的元素console.log(arr); // 返回 ["a", "b", "c", "123", "aa", "bb"];不破坏原来的数组
var arr = ['a','b','c','123','aa','bb'];console.log(arr.slice(2)); 返回["c", "123", "aa", "bb"]console.log(arr); // 返回 ["a", "b", "c", "123", "aa", "bb"];不破坏原来的数组
splice(2,2); 从下标为2开始,截取2个元素
var arr = ['a','b','c','123','aa'];console.log(arr.splice(2,2)); // 返回 ["c", "123"]console.log(arr); // 返回 ["a", "b", "aa"],原数组被改变
splice(2); 从下标为2开始截取后面全部内容
var arr = ['a','b','c','123','aa'];var arr = ['a','b','c','123','aa'];var newArr1 = arr.splice(2);console.log(newArr1); 返回["c", "123", "aa"]
var arr = ['a','b','c','123','aa'];console.log(arr.splice(4,0,'abc')); // 返回 [],在下标为4的前面添加 abcconsole.log(arr); // 返回["a", "b", "c", "123", "abc", "aa"]
var arr = ['a','b','c','123','aa'];console.log(arr.splice(4,1,'bb')); // 返回 ["aa"],将下标为4的替换成 bbconsole.log(arr); // 返回 ["a", "b", "c", "123", 'bb']
删除一个
var arr = ['a','b','c','123','aa'];console.log(arr.splice(3,1)); // 返回 ["123"],删除下标3的元素console.log(arr); // 返回 ["a", "b", "c", "aa"]
删除二个
var arr = ['a','b','c','123','aa'];console.log(arr.splice(2,2)); // 返回 ["c", "aa"],从下标2开始,删除两位console.log(arr); // 返回 ["a", "b"]
思路:将undefined删除掉
var index = [1,2,,,,,4];for(var i = 0; i < index.length ;i++){if(index[i] == undefined){index.splice(i,1);i--; // 下标为i的元素被删除,所以需要i--来获取因删除而往前进的元素}}console.log(index); // 返回 1,2,4
用[][]方式访问多维数组内的元素
var index = [[1,2,4], [4,5,6], ['a','b','c'], ['aa','bb']];console.log(index); // 返回 [Array[3], Array[3], Array[3], Array[2]]console.log(index.length); // 返回 4console.log(index[3][1]); // 返回 bb
function demo(){console.log(arguments); // 返回 [1, 2, 9, 8, 6, 4]// console.log(arguments.reverse()); // 报错,不具有数组的方法}demo(1,2,9,8,6,4);
获取所有的li:
var list = document.getElementsByTagName('li');console.log(list);// console.log(list.reverse()); 不具有数组的方法
获取ul中的li:
var ul = document.getElementById('ulContent');var lis = ul.getElementsByTagName('li');console.log(lis);
for(var i = 0;i < list.length;i++){console.log(list[i]);}
for(var i in list){console.log(i, list[i]);}
var obj={}for(var i = 0; i < 5; i++){obj[i] = i*i;}console.log(obj); // 返回 Object {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, length: 5}
var str = 'abcdefghijklmnopqrstuvwxyz';console.log(str[0]); // 返回 aconsole.log(str[1]); // 返回 bstr[0] = 'b'; // 不能修改console.log(str); // 返回 abcdefghijklmnopqrstuvwxyz
作者 wendy
2019 年 5月 23日