JavaScript数组和字符串常用方法

push pop shift unshift

  • push: 在数组末尾添加一个元素
  • pop: 在数组末尾删除一个元素
  • shift: 在数组前面取出一个元素并将这个元素从数组中删除
  • unshift: 在数组前面添加一个元素
  • 注意点:
    • 返回的都是添加的或者被删除的元素
    • 原数组会被修改

清空数组

语法糖(推荐)

var arr = [1, 3, 5];
arr = []; // 推荐

设置长度为0

arr.length = 0;

splice方法

  • 第一个参数: 从什么地方开始删除
  • 第二个参数: 删除多少个
//splice方法用于删除数组中的元素
//第一个参数: 从什么地方开始删除
//第二个参数: 需要删除多少个
arr.splice(0, arr.length);

concat

  • 用于拼接数组
  • 函数返回一个新数组,不会更改原数组
  • 格式: 数组一.concat(数组二) (将数组二拼接到数组一后面)

slice

  • 用于截取数组
  • 函数返回一个新数组,不会更改原数组
  • 格式: 数组一.slice(参数1,参数2)
  • 参数1: 表示从哪里开始截取 参数2: 表示截取到哪里 但不包括参数2
  • 参数1 参数2都代表索引

查找元素

indexOf

  • 接收一个参数, 表示要查找的元素,返回查找到元素的索引,没有找到返回-1
  • 注意点: 从前往后查找,一旦查找到就不会继续查找

lastIndexOf

  • 接收一个参数, 表示要查找的元素,返回查找到元素的索引,没有找到返回-1
  • 注意点: 从后往前查找,一旦查找到就不会继续查找

find

  • find方法需要传递一个函数, 内部会遍历调用者(数组), 取出每一个元素.取出一个元素就调用一次传入的函数, 将取出的元素传递给这个函数
  • 只要有一个元素满足函数中的条件就会停止查找,返回查找的数,如果数组里没有,返回undefined
    注意点: 在IE浏览器中会有问题

findIndex

  • find方法需要传递一个函数, 内部会遍历调用者(数组), 取出每一个元素.取出一个元素就调用一次传入的函数, 将取出的元素传递给这个函数
  • 只要有一个元素满足函数中的条件就会停止查找,返回查找的数的索引,如果数组里没有,返回-1
    注意点: 在IE浏览器中会有问题

filter

  • 执行函数后,内部会创建一个新数组并返回
  • 接收一个回调函数,回调函数满足条件返回true就把元素添加到新数组中

join

  • 将数组转换为字符串,接收一个参数,表示数组元素之间用什么连接
  • 返回转换的字符串

sort

  • 常用于数组排序
  • 不传参数,按照Unicode编码排序,排序不一定稳定,可能会有意想不到的结果
  • 接收一个回调函数,回调函数接收两个参数a,b,如果返回值小于0,那么 a 会被排列到 b 之前,如果返回值大于0,b 会被排列到 a 之前,如果相等,位置不变
arr.sort(function (a, b) {
    // 直接return, 用第一个参数减去第二个参数的结果, 就是升序排序
    // 直接return, 用第二个参数减去第一个参数的结果, 就是降序排序
    // return a - b;
    return b - a;
});

reverse

  • 用于数组的翻转

遍历数组

forEach

  • 接收一个回调函数,回调函数接收一个参数
  • forEach会依次取出调用者的每一个元素, 每取出一个元素就会执行一次回调函数,并且会将当前取出的元素传递给回调函数
  • 注意点: 原数组会被修改

map

  • 和filter函数差不多, 都用于过滤元素, 只有满足添加的元素才会被添加到新的数组中
  • 但是和filter函数的区别是, filter返回的数组中只有满足添加的元素
  • 而map返回的数组中不满足条件的元素会存储一个undefined
  • map会依次取出调用者的每一个元素, 每取出一个元素就会执行一次回调函数,并且会将当前取出的元素传递给回调函数

字符串的类型

基本类型

Number
Boolean
null
undefined
String

基本类型的包装类型

  • 通过Number/Boolean/String类型的构造函数创建的对象, 我们就称之为包装类型
var num2 = new Number(666);
var flag2 = new Boolean(false);

字符串的定义

字面量定义

  • 通过字面量创建的字符串, 是一个常量, 是不可以修改的
var str1 = 'abc';
var str2 = "lnj";
var str3 = new String("it666");

字符串的性能

  • 由于每次定义字符串都会重新开辟一块存储空间,所以以后在企业开发中, 一定要尽量避免频繁的拼接字符串

concat

  • 和数组一样

获取字符

  • 注意点: 以下的方法只有H5支持

charAt

  • 接收一个数字,表示获取指定索引的字符

charCodeAt

  • 接收一个数字,表示获取指定索引的字符的ASCII码

截取子串

slice

  • 和数组一样,接收两个参数: 起始位置和结束位置,但不包括结束位置
  • 返回截取的字串

substr

  • 接收两个参数: 起始位置和截取的字符数
  • 返回截取的字符串

substring

  • 接收两个参数: 起始位置和结束位置,但不包括结束位置
  • 返回截取的子串

字符串切割

split

  • 接收一个参数: 按什么字符切割
  • 返回一个数组,存放切割后的字符串

字符串查找

indexOf 和 lastIndexOf

  • 和数组一样,返回找到的索引,一旦找到不会继续查找

demo

// http://www.it666.com?name=lnj&age=13;
// 获取URL中的参数
var url = "http://www.it666.com?name=lnj&age=13";
// 1.找到?的位置
var idx = url.indexOf("?");
// 2.将参数截取出来
// +1 是截取的是否不需要?, 所以从?后面一个开始截取
// url.length 是字符串的长度, 而字符串索引的最大值是长度-1
// substring会从第一个参数开始截取, 截取到第二个参数位置, 但是不包含第二位参数所在的位置
var res = url.substring(idx + 1, url.length);
// console.log(res);
// 3.拆分参数
var arr = res.split("&");
// console.log(arr); // [name=lnj, age=13]
arr.forEach(function (ele) {
// [name, lnj]
// [age, 13]
var tempArray = ele.split("=");
console.log(tempArray);
});

你可能感兴趣的:(JavaScript数组和字符串常用方法)