今天闲来无事,刚刚写完一个项目里面用了不少javaScript方法,于是我就做了一个简单的总结,下面大家可以一起看看
1.数组的定义
数组(array)是按次序排列的一组值。每个值的位置都有下标(从0开始),整个数组用方括号表示
let arr = ['a','b','c'];
2.创建数组的三种方法
// 第一种是我们的常规方式
let arr = newArray();
arr[0] = 'a'; arr[1] = 'b';
arr[2] = 'c';
//第二种可以是简洁方式
let arr = newArray ( 'a','b','c' );
// 第三种还可以是字面方式
let arr = ['a','b','c'];
let arr = [
{a:1}, [1,2,3],
function ( ) {
return true;
}
];
3.数组方法和属性
length 设置或返回数组元素的个数,length = 0也可以清空数组。
let arr = ['1', '2', '3', '4', '5', '6', '7', '8'];
console.log(arr.length) // 7 "数组长度"
console.log(arr.length = 0) // 0 "数组长度"
console.log(arr[2]) // 3 '根据下标查找出来的数组位置'
pop() 删除数组中的最后一个元素,并返回删除的元素
let arr = ['1', '2', '3', '5', '4', '6', '7', '8'];
arr.pop();
console.log(arr) // ["1", "2", "3", "5", "4", "6", "7"] "删除后的数组"
push() 向数组的末尾添加一个或多个新元素,并返回新数组的长度
let arr = [1, 2, 3, 4, 5];
arr.push(6, 7, 8, 9)
console.log(arr, '尾部添加数组') // [1, 2, 3, 4, 5, 6, 7, 8, 9] "尾部添加数组"
shift() 删除数组的第一个元素,并返回删除的元素
let arr = [1, 2, 3, 4, 5];
arr.shift();
console.log(arr, '删除第一项') // [2, 3, 4, 5] "删除第一项"
unshift() 向数组的开头添加一个或多个元素,并返回新数组的长度
let arr = [1, 2, 3, 4, 5];
arr.unshift('A,B,C')
console.log(arr, '向数组开头添加多个元素并返回结果') // ["A,B,C", 1, 2, 3, 4, 5] "向数组开头添加多个元素并返回结果"
toString() 把数组转换成字符串,并返回结果
let arr = [1,2,3,4,5,6];
var arr1 = arr.toString()
console.log(arr1,typeof(arr1),'转字符串') // 1,2,3,4,5,6 string 转字符串
indexOf() 搜索数组中的元素,并返回它所在的位置,如果搜索的元素没有出现,则返回-1
let str = [1, 2, 3, 4]
console.log(str.indexOf(3), '查找元素位置并返回该元素下标') // 2 "查找元素位置并返回该元素下标"
lastIndexOf() 返回指定字符串最后出现的位置,在一个字符串中指定的位置从后往前搜索。如果搜索的元素没有出现,则返回-1
let str = [1, 2, 3, 4]
console.log(str.lastIndexOf(5)) // -1
console.log(str.lastIndexOf(4)) // 3
join() 将数组中的每个元素转换成字符串,并将这些字符串连接起来
let arr = ['a', 'b', 'c', 'd']
console.log(arr.join()); // a,b,c,d
console.log(arr.join(' - ')); // a - b - c - d
console.log(arr.join(' and ')); // a and b and c and d
concat() 连接两个或多个数组,并返回合并结果,不会改变现有的数组
let arr = ['a', 'b', 'c']
let arr1 = ['c', 'b', 'a']
console.log(arr.concat(arr1)) // ["a", "b", "c", "c", "b", "a"]
slice() 选取数组的一部分,并返回一个新数组,不会改变原数组
// array.slice ( start,end )
// start 可选, 规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
//end可选, 规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
let arr6 = ['a', 'b', 'c', 'd', 'e']
console.log(arr6.slice(-1), '-1是最后一个元素,以此类推') // ["e"] "-1是最后一个元素,以此类推"
console.log(arr6.slice(0, 2)) // ["a", "b"]
splice() 从数组中添加、删除、替换元素,会改变原数组
// array.splice(index,howmany,item1,.....,itemX)
//index必需, 规定从何处添加/删除元素。
// howmany 必需, 规定应该删除多少元素。必须是数字,但可以是"0"。
// item1, ..., itemX 可选, 要添加到数组的新元素
let arr1 = [ 'a','b','c','d','e' ];
arr1.splice(0,1);
arr1 // [ "b","c","d","e" ]
let arr2 = [ 'a','b','c','d','e' ];
arr2.splice(0,1,'A');
arr2 // [ "A","b","c","d","e" ]
let arr3 = [ 'a','b','c','d','e' ];
arr3.splice(0,0,'A');
arr3 // [ "A","a","b","c","d","e" ]
reverse() 用于颠倒数组中元素的顺序,会改变原数组
let arr7 = ['a', 'c', 'd', 'e', 'f', 'g']
console.log(arr7.reverse()) // ["g", "f", "e", "d", "c", "a"]
find() 返回符合传入测试函数条件的数组元素
// find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
// find() 方法为数组中的每个元素都调用一次函数执行:
// 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。// 如果没有符合条件的元素返回 undefined
let ages = [ '10','18','20','36','50' ];
function checkAdult (age) {
return age >= 20;
}
ages.find(checkAdult)// 20
ages // [ '10', '18', '20','36', '50' ]
filter() 检测数值元素,并返回符合条件的所有元素的数组
//filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let ages = [ '10','18','20','36','50' ];
function checkAdult (age) {
return age >= 20;
}
ages.filter(checkAdult) // [ "20","36","50" ]
ages // [ '10','18','20','36','50' ]
includes() 判断一个数组是否包含一个指定的值
let ages = [ '10','18','20','36','50' ];
ages.includes('10'); //true
ages.includes('75'); //false
ages // [ '10','18','20','36','50' ]
map() 通过指定函数处理数组中的每个元素,并返回处理后的
// map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
// map() 方法按照原始数组元素顺序依次处理元素。
//array.map(function(currentValue,index,arr), thisValue)
//currentValue 必须,当前元素的值//index 可选, 当期元素的索引值
//arr 可选, 当期元素属于的数组对象//this.value 可选, 对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
let ages = [ 10,18,20,36,50 ];
let res = ages.map( function ( item, index, input ) {
return item *10
})
res // [ 100, 180, 200, 360, 500 ]
ages // [10, 18, 20, 36, 50]
forEach() 遍历数组,数组每个元素都执行一次回调函数,会改变原数组
// forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
// array.forEach(function(currentValue, index, arr), thisValue)
// currentValue 必需, 当前元素// index 可选, 当前元素的索引值。
// arr 可选, 当前元素所属的数组对象。
let ages = [ 10,18,20,36,50 ];
let res = ages.forEach ( function ( item, index, input) {
input[index] = item *10;
})
res // undefined
ages // [100, 180, 200, 360, 500]
sort() 对数组的元素进行排序,默认按升序排序,会改变原数组
let ages = [ 36,50,10,20,18 ];
ages.sort(); // [ 10, 18, 20, 36, 50 ]
ages // [ 10, 18, 20, 36, 50 ]
some() 检测数组元素中是否有元素符合指定条件
// some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
// some() 方法会依次执行数组的每个元素:
// 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
// 如果没有满足条件的元素,则返回false。
let ages = [ '10','18','20','36','50' ];
function checkAdult ( age ) {
return age >= 20;
}
ages.some(checkAdult) // true
ages // [ '10', '18', '20','36', '50' ]
every() 检测数组中是否每个元素都符合指定条件
// every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
// every() 方法使用指定函数检测数组中的所有元素:
// 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
// 如果所有元素都满足条件,则返回 true。
let ages = [ '10','18','20','36','50' ];
function checkAdult ( age ) {
return age >=20;
}
ages.every(checkAdult) // false
ages // [ '10', '18', '20','36', '50' ]
isArray() 判断对象是否为数组
// isArray() 方法用于判断一个对象是否为数组。
// 如果对象是数组返回true,否则返回false。
let ages = [ '10','18','20','36','50' ];
Array.isArray( ages ); //true
ages // [ '10','18','20','36','50' ]
reduce() 将数组元素迭代计算为一个值(从左到右)
// reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
// array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
// total 必需,初始值, 或者计算结束后的返回值。
// currentValue 必需,当前元素
// currentIndex 可选,当前元素的索引
// arr 可选,当前元素所属的数组对象。
let ages = [10,18,20,36,50];
function getSun ( total, num ) {
return total + num;
}
ages.reduce(getSun) // 134
ages // ['10', '18', '20','36', '50']
生成10位数纯数字的随机数
const random = Math.floor ( ( Math.random( ) + Math.floor(Math.random( ) * 9 + 1) ) * Math.pow(10,10 - 1 )