Array常用方法
push
在数组末端添加一个或多个元素,返回数组新长度
var arr = [1, 2, 3, 4];var push_arr = arr.push("Sun");console.log(arr); //[1,2,3,4,"Sun"];console.log(push_arr); // 5
pop
删除数组最后一个元素,返回该元素
var arr = [1, 2, 3, 4];var pop_arr = arr.pop();console.log(arr); //[1,2,3];console.log(pop_arr); // 4
shift
删除数组第一个元素,返回该元素
var arr = [1, 2, 3, 4];var shift_arr = arr.shift();console.log(arr); // [2, 3, 4]console.log(shift_arr); // 1
unshift
在数组第一个位置添加元素,返回数组新长度
var arr = [1, 2, 3, 4];var unshift_arr = arr.unshift("Tom");console.log(arr); // ["Tom", 2, 3, 4]console.log(unshift_arr); // 4
join
以参数作为分隔符,把数组分隔成字符串,默认逗号
var arr = [1, 2, 3, 4];console.log(arr.join()); //1,2,3,4console.log(arr.join(":")); //1:2:3:4console.log(arr); //[1,2,3,4],原数组不变
concat
将多个数组合并,返回新数组,原数组不变!
var arr = [1, 2, 3, 4];var arr2 = [11, 12, 13];var arr3 = arr.concat(arr2);console.log(arr3); // [1, 2, 3, 4, 11, 12, 13]console.log(arr); // [1, 2, 3, 4] (原数组未改变)
reverse
颠倒数组顺序,返回改变后的数组
var arr=[12,25,5,20];console.log(arr.reverse()); // [20, 5, 25, 12]console.log(arr); // [20, 5, 25, 12] (原数组改变)
slice
截取数组,提取原数组的一部分,返回新数组,原数组不变
arr.slice(start , end);
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素
var arr = [1, 4, 6, 8, 12];var arr1 = arr.slice(1);var arr2 = arr.slice(0, 4);var arr3 = arr.slice(1, -2);var arr4 = arr.slice(-5, 4);var arr5 = arr.slice(-4, -1);console.log(arr1); // [4, 6, 8, 12]console.log(arr2); // [1, 4, 6, 8]console.log(arr3); // [4, 6]console.log(arr4); // [1, 4, 6, 8]console.log(arr5); // [4, 6, 8]console.log(arr); // [1, 4, 6, 8, 12] (原数组未改变)
splice
删除原数组的一部分,可以在删除的位置添加,返回被删除的元素,改变原数组!
var arr = [1, 2, 3, 4, 5, 6];var arr1 = arr.splice(2, 1);console.log(arr1); // 3console.log(arr); // [1, 2, 4, 5, 6] 改变原数组!
sort
将数组排序
// 按照字符编码的顺序进行排序var arr = [1, 100, 5, 20];console.log(arr.sort()); // [1, 100, 20, 5]console.log(arr); // [1, 100, 20, 5] (原数组改变)// 升序var arr = [1, 100, 5, 20];function sortNumber(a, b) {return a - b;}console.log(arr.sort(sortNumber)); //[1, 5, 20, 100]console.log(arr); //[1, 5, 20, 100] (原数组改变)// 降序var arr = [1, 100, 5, 20];function sortNumber(a, b) {return b - a;}console.log(arr.sort(sortNumber)); // [100, 20, 5, 1]console.log(arr); // [100, 20, 5, 1] (原数组改变)
indexOf
返回给定元素在数组中第一次出现的位置,没有返回-1
array.indexOf(**item,start**) (从数组的开头(位置 0)开始向后查找)
item**: 必须。查找的元素。
start**:可选的整数参数。规定在数组中开始检索的位置。如省略该参数,则将从**array[0]**开始检索。
var arr = [1, 4, 7, 10, 7, 18, 7, 26];console.log(arr.indexOf(7)); // 2console.log(arr.indexOf(7, 4)); // 4console.log(arr.indexOf(5)); // -1
lastIndexOf
返回给定元素在数组中最后一次出现的位置,没有返回-1
array.lastIndexOf(**item,start**) (从数组的末尾开始向前查找)
it**em**: 必须。查找的元素。
start**:可选的整数参数。规定在数组中开始检索的位置。如省略该参数,则将从`array[array.length-1]**`开始检索。
var arr = [1, 4, 7, 10, 7, 18, 7, 26];console.log(arr.lastIndexOf(7)); // 6console.log(arr.lastIndexOf(7, 2)); // 2
5个迭代方法:forEach()、map()、filter()、some()、every()
这几个方法语法都一样,都不会改变原数组。
currentValue** : 必需。当前元素
index**: 可选。当前元素的索引值。
arr **: **可选。当前元素所属的数组对象。
forEach
对数组进行遍历循环,这个方法没有返回值。
var Arr = [1, 4, 7, 10];Arr.forEach(function (currentValue, index, arr) {console.log(index, currentValue, arr === Arr);});// 0 1 true// 3 1 4 true// 3 2 7 true// 3 3 10 true
map
指“映射”,方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
var arr = [1, 4, 8, 10];var arr2 = arr.map(function (currentValue) {return currentValue * currentValue;});console.log(arr2); // [1, 16, 64, 100]
filter
数组过滤器
var arr = [1, 4, 6, 8, 10];var result1 = arr.filter(function (currentValue) {return currentValue > 5;});console.log(result1); // [6, 8, 10]
some
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
var arr = [1, 4, 6, 8, 10];var result1 = arr.some(function (currentValue) {return currentValue > 10;});console.log(result1); // falsevar result2 = arr.some(function (currentValue) {return currentValue > 5;});console.log(result2); // true
every
判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
var arr = [1, 4, 6, 8, 10];var result1 = arr.every(function (currentValue) {return currentValue < 12;});console.log(result1); // truevar result2 = arr.every(function (currentValue) {return currentValue > 1;});console.log(result2); // false
2个归并方法:reduce()、reduceRight()
arr.reduce(function (total, cur, index, arr) {}, initialValue);
total :必需。初始值, 或者计算结束后的返回值。
cur :必需。当前元素。
index** :可选。当前元素的索引。
arr**:可选。当前元素所属的数组对象。
initialValue**:**可选。传递给函数的初始值。
reduce
依次处理数组每个成员,从左到右
var arr = [1, 2, 3, 4, 5];var result1 = arr.reduce(function (total, cur, index, arr) {console.log("total:" + total + ",cur:" + cur + ",index:" + index);return total + cur;});console.log("结果:" + result1);// 输出// total:1,cur:2,index:1// total:3,cur:3,index:2// total:6,cur:4,index:3// total:10,cur:5,index:4// 结果:15var result2 = arr.reduce(function (total, cur, index, arr) {console.log("total:" + total + ",cur:" + cur + ",index:" + index);return total + cur;}, 10);console.log("结果:" + result2);// 输出// total:10,cur:1,index:0// total:11,cur:2,index:1// total:13,cur:3,index:2// total:16,cur:4,index:3// total:20,cur:5,index:4// 结果:25
reduceRight
依次处理数组每个成员,从右到左
字符串常用方法
length
获取字符串的长度
var myString = "hello kitty";myString.length; // 11
chatAt
返回指定位置的字符
var myString = "hello world";myString.charAt(0); // hmyString.charAt(3); // lmyString.charAt(6); // w
concat
连接字符串,返回连接后的新字符串。
var str1 = "hello";var str2 = "World";var str3 = str1.concat(str2);console.log(str3);
slice
提取字符串并返回,不改变原字符串!不包含第二个参数的位置
var myString = "hello world";myString.slice(0, 5); // hellomyString.slice(6); // worldmyString.slice(3, -1); // lo worl
split
分割成字符串数组
var myString = "hello world";myString.split(""); // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]var str = "How,are,you,doing,today?";str.split(","); // ["How", "are", "you", "doing", "today?"]
substring
提取字符并返回,不改变原字符串!
var myString = "hello world";myString.substring(0, 5); // hellomyString.substring(6); // worldmyString.substring(3, -1); // hel
substr
提取字符串并返回,不改变原字符串
var myString = "hello world";myString.substr(3, 5); // lo womyString.substr(6); // world
replact
替换字符串
var str = "do you love me";str.replace('love','hate'); // "do you hate me"
indexOf
返回字符串第一次出现的位置,没有返回-1
var myString = "hello world";myString.indexOf("e"); // 1myString.indexOf("o"); // 4myString.indexOf("o", 6); // 7
lastIndexOf
返回字符串最后一次出现的位置,没有返回-1
var myString = "hello world";myString.indexOf("e"); // 1myString.indexOf("o"); // 7myString.indexOf("l"); // 9
trim
去除空格
var str = ' abc ';str.trim(); // 'abc'console.log(str); // ' abc '
toLowerCase
全部转为小写,返回新字符串,不改变原字符串
var myString = "HELLO WORLD";var myString1 = myString.toLowerCase()console.log(myString1); // hello world
toUpperCase
全部转为大写,返回新字符串,不改变原数组
var myString = "hello world";var myString1 = myString.toUpperCase()console.log(myString1); // HELLO WORLD
