let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let newArr = [];
/***
* Array.push()
* 向数组的末尾添加元素
* 改变原数组
*/
arr.push(0)
console.log(arr) //arr=[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
/**
* Array.unshift()
* 向数组开头添加元素
* 改变原数组
*/
arr.unshift(0)
console.log(arr) // arr=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
/**
* Array.pop()
* 弹出数组中最后一个元素
* 改变原数组
*/
arr.pop()
console.log(arr) // arr=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
/**
* Array.shift()
* 弹出数组中第一个元素
* 改变原数组
*/
arr.shift()
console.log(arr) // arr=[1, 2, 3, 4, 5, 6, 7, 8, 9]
/**
* Array.reverse()
*
* 颠倒数组中元素的顺序。
*/
arr.reverse();
console.log(arr) //arr=[9, 8, 7, 6, 5, 4, 3, 2, 1]
arr.reverse();
/**
* Array.splice()
* 用于添加或删除数组中的元素
* 改变原数组
* 语法:array.slice(start, end)
* @param:
* index: 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字
* howmany: 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
* item1, ..., itemX: 可选。要添加到数组的新元素
*
* @return:
* 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
* 如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
*/
arr.splice(1)
console.log(arr) // arr=[1]
arr.splice(1,1)
console.log(arr) //arr = [1]
arr.splice(1,1,2,3,4)
console.log(arr) // arr =[1, 2, 3, 4]
/**
* Array.slice()
* 不改变原始数组
* @param:
* start:可选。规定从何处开始选取。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
* end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
* @return:
* 返回一个新的数组,包含从 start(包括该元素) 到 end (不包括该元素)的 arrayObject 中的元素。
*/
newArr=arr.slice(0,1)
console.log(arr) // arr= [1, 2, 3, 4]
console.log(newArr) // newArr=[1]
/**
* Array.sort()
*
* 语法:array.sort(sortfunction)
* @param:
* sortfunction: 可选。规定排序顺序。必须是函数。
* @return:
* Array 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
* 改变原始数组
* 对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。
* 注意:当数字是按字母顺序排列时"40"将排在"5"前面。使用数字排序,你必须通过一个函数作为参数来调用。函数指定数字是按照升序还是降序排列。
*/
arr.sort((a,b)=>{
return b-a;
})
console.log(arr) // arr=[4, 3, 2, 1]
arr.sort((a,b)=>{
return a-b;
})
console.log(arr) // arr=[1, 2, 3, 4]
/**
* Array.every()
* 不会改变原始数组
* 语法:array.every(function(currentValue,index,arr), thisValue)
* @param:
* function(currentValue, index,arr): 必须。函数,数组中的每个元素都会执行这个函数
* currentValue:必须。当前元素的值
* index:可选。当前元素的索引值
* arr:可选。当前元素属于的数组对象
* thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
* @return:
* 布尔值。如果所有元素都通过检测返回 true,否则返回 false。
*
* 检测数组所有元素是否都符合指定条件(通过函数提供)。
* 使用指定函数检测数组中的所有元素:
* 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
* 如果所有元素都满足条件,则返回 true。
*/
let flag = arr.every((currentValue,index,arr)=>{
return currentValue>0;
// return currentValue>2;
})
console.log(flag) // true
// console.log(flag) // false
/**
* Array.some()
* 不会改变原始数组
* 语法:array.some(function(currentValue,index,arr),thisValue)
* @param:
* function(currentValue,index,arr): 必须。函数,数组中的每个元素都会执行这个函数
* currentValue:必须。当前元素的值
* index:可选。当前元素的索引值
* arr:可选。当前元素属于的数组对象
* thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
* @return:
* 布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
*
*/
falg =arr.some((currentValue,index,arr)=>{
return currentValue>2;
})
console.log(falg) //true
/**
* Array.reduce()
* 语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
* @param:
* function(total, currentValue, currentIndex, arr):必需。用于执行每个数组元素的函数。
* total: 必需。初始值, 或者计算结束后的返回值。
* currentValue: 必需。当前元素
* currentIndex: 可选。当前元素的索引
* arr: 可选。当前元素所属的数组对象。
* initialValue: 可选。传递给函数的初始值
*
* 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
* 可以作为一个高阶函数,用于函数的 compose。
*
*
*/
let num=arr.reduce((total, currentValue, currentIndex, arr)=>{
return total+currentValue;
})
console.log(num); // num=10
/**
* array.concat()
*
* 语法:array1.concat(array2,array3,...,arrayX)
* @param:
* array2,array3,...,arrayX:必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
* @return:
* 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
* 方法用于连接两个或多个数组。
* 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
*/
let arrs = arr.concat(newArr)
console.log(arr) //arr=[1, 2, 3, 4]
console.log(newArr) //newArr=[1]
console.log(arrs); //arrs=[1, 2, 3, 4, 1]
/**
* Array.filter()
*
* 语法:array.filter(function(currentValue,index,arr), thisValue)
*
* @param:
* function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数
* currentValue: 必须。当前元素的值
* index: 可选。当前元素的索引值
* arr: 可选。当前元素属于的数组对象
* thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
* @return:
* 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
*
* 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
* 不改变原始数组。
*/
let filterArr = arr.filter((currentValue,index,arr)=>{
return currentValue>2;
})
console.log(arr) //arr=[1, 2, 3, 4]
console.log(filterArr); //filterArr=[3, 4]
/**
* Array.find()
* 语法:array.find(function(currentValue, index, arr),thisValue)
* @param:
* function(currentValue, index, arr):
* currentValue: 必需。当前元素
* index:可选。当前元素的索引值
* arr:可选。当前元素所属的数组对象
* thisValue: 可选。 传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值
*
* @return:
* 返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
*
* 返回通过测试(函数内判断)的数组的第一个元素的值。
* find() 方法为数组中的每个元素都调用一次函数执行:
* 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
* 如果没有符合条件的元素返回 undefined
* 并没有改变数组的原始值
*/
let nums =arr.find((i)=>{
return i<3;
})
console.log(arr) //arr =[1, 2, 3, 4]
console.log(nums) //nums=1