1. reduceRight()
方法的功能和reduce()功能是一样的,不同的是reduceRight() 从数组的末尾向前将数组中的数组项做累加。
注意:reduce()对于空数组时不会执行回调函数的。
// array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)
/*
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值
*/
let numbers = [2, 45, 67, 100];
// 从右到左 减去每个数组元素 初始值为 300
let result = numbers.reduceRight(function (total, value, index, arr) {
return total - value; // 从右向左 逐个减去每个元素
}, 300);
console.log(result); // 86
2. revrese()
方法用于颠倒数组中的元素顺序。
// array.reverse()
/*
返回值:Array。 数组颠倒之后的新数组
*/
let nums = [1, 2, 3, 4, 5];
// 颠倒数组元素顺序
let newNums = nums.reverse();
console.log(newNums); //[5, 4, 3, 2, 1]
3. shift()
方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
注意:此方法改变数组的长度!
提示:移除数组末尾的元素可以使用pop()方法。
// array.shift()
/*
返回值:任何类型(*)。数组原来的第一个元素的值(移除的元素)
*:数组元素可以是一个字符串,数字,数组,布尔,或者其他对象类型。
*/
let colors = ["red", "blue", "pink", "orange"];
// 移除数组中第一个元素
let rem = colors.shift();
console.log(rem); // red
4.slice()
方法可从已有的数组中返回选定的元素数组。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意:slice() 方法不会改变原始数组。
// array.slice(start, end)
/*
start 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
返回值:Array。返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
*/
let colors = ["red", "blue", "pink", "orange", "skyblue"];
colors.slice(2, 3); // ['orange'] 包含索引为2的元素 不包含索引为3的元素
colors.slice(2); // ["orange", "skyblue"] 截取数组第三个元素 及后面的所有元素
colors.slice(-3, -1); //['blue', 'pink'] 截取倒数第三个元素(包含)到倒数第一个元素(不包含)的所有元素
// slice() 还可以操作字符串
let str = "Huanying,laidao,wodeCSDN.";
// 从第五个(不包含)字符开始 截取之后的全部
console.log(str.slice(5)); // ing,laidao,wodeCSDN.
// 截取第四(不包含)到第八个(包含)字符
console.log(str.slice(4, 8)); // ying
5.some()
方法用于检测数组中的元素是否满足指定条件(函数提供)。
方法会一次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
注意:some() 不会对空数组进行检测。
注意:some() 不会改变原始数组。
// array.some(function(currentValue,index,arr),thisValue)
/*
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:布尔值。如果数组中有元素满足条件返回true,否则返回false
*/
let ages = [5, 23, 45, 6, 7, 82];
// 检测ages数组中是否有大于60的元素
let res1 = ages.some(function (value, index, arr) {
return value > 60;
});
console.log(res1); // true
// 检测ages数组中是否有小于1的元素
let res2 = ages.some(function (value, index, arr) {
return value < 1;
});
console.log(res2); //false
6.sort()
方法用于对数组的元素进行排序。
排序顺序可以是字母或数组,并按升序或者降序排序。
默认排序顺序Wie按字母升序。
注意:当数字时按字母顺序排列时“40”将排在“5”前面。
使用数组排序,你必须通过一个函数作为参数来调用。
函数指定数字时按照升序还是降序排列。
注意:这种方法会改变原始数组!
// array.sort(sortfunction)
/*
sortfunction 可选。规定排序顺序。必须是函数。
返回值:Array 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
*/
let ages = [5, 23, 45, 6, 7, 82];
// 对ages中的元素进行排序
// 升序
ages.sort(function (a, b) {
return a - b;
});
console.log(ages); // [5, 6, 7, 23, 45, 82] 改变了原始数组
// 降序
ages.sort(function (a, b) {
return b - a;
});
console.log(ages); // [82, 45, 23, 7, 6, 5]
7. splice()
方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
// array.splice(index,howmany,item1,.....,itemX)
/*
index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ..., itemX 可选。要添加到数组的新元素
返回值: Array。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
*/
let colors = ["red", "blue", "pink", "orange", "skyblue"];
// 移除数组第三个元素(索引为2的元素),并在数组第三个位置添加新元素
colors.splice(2, 1, "newColor1", "nweColor2");
console.log(colors); //['blue', 'pink', 'newColor1', 'nweColor2', 'skyblue'] 返回了新的数组
// 从所以1位置开始,删除之后的2个元素
colors.splice(1, 2);
console.log(colors); //['blue', 'skyblue'] 返回了删除的两个元素
8. toString()
方法可以把数组转换为字符串,并返回结果。
注意: 数组中的元素之间用逗号分隔。
// array.toString()
/*
返回值: String。 数组的所有值用逗号隔开
*/
let colors = ["red", "blue", "pink", "orange", "skyblue"];
// 将colors数组 转化为字符串
let colStr = colors.toString();
console.log(colStr);// red,blue,pink,orange,skyblue
9.unshift()
方法可想数组的开发添加一个或更多元素,并返回新的长度。
注意:该方法将改变数组的数组。
提示:将新项添加到数组末尾,请求使用push()方法。
// array.unshift(item1,item2, ..., itemX)
/*
item1,item2, ..., itemX 可选。向数组起始位置添加一个或者多个元素。
返回值: Type 描述 Number 数组新长度
*/
let colors = ["blue", "pink", "orange", "skyblue"];
colors.unshift("newColor");
console.log(colors); //['newColor', 'blue', 'pink', 'orange', 'skyblue']
10. valueOf()
方法返回Array对象的原始值。
该原始值由Array对象派生的所有对象继承。
valueOf() 方法通常用于JavaScript在后台自动调用,并不显式地出现在代码中。
注意:valueOf() 方法不会改变数组。
// array.valueOf()
/*
返回值:Array valueOf() 返回数组值
*/
// valueOf()的返回值和数组本身一样
console.log(colors.valueOf());//['newColor', 'blue', 'pink', 'orange', 'skyblue']
注:出于对JavaScript重新学习,我整理了一下JavaScript的数组方法,也是为了巩固学习所得,文章参考《菜鸟教程》整理,内容略显浅薄,如有不当之处,欢迎指正。