【Javascript】数组、字符串的常用属性和方法

1. 数组

常用API

  • arr1.concat(arr2) 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组

  • arr.every(callback(element[, index[, array]])[, thisArg]) 测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

  • arr.some(callback(element[, index[, array]])[, thisArg]) 测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

  • arr.fill(value[, start[, end]]) 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括end索引。

  • arr.filter(callback(element[, index[, array]])[, thisArg]) 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

  • arr.find(callback[, thisArg]) 返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。

  • arr.findIndex(callback[, thisArg]) 返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

  • arr.indexOf(searchElement[, fromIndex]) 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

  • arr.lastIndexOf(searchElement[, fromIndex]) 返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回-1。

  • arr.forEach(callback(currentValue [, index [, array]])[, thisArg]) 对数组的每个元素执行一次给定的函数。

  • arr.join([separator]) 将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。

  • arr.toString() 返回一个字符串,表示指定的数组及其元素。

  • arr.slice([begin[, end]]) 返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。

  • array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容(删除或替换的内容,添加的内容不返回)。此方法会改变原数组。

  • arr.map(callback(element[, index[, array]])[, thisArg]) 创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

  • arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue]) 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。reducer 函数的返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果值

  • arr.sort([compareFunction]) 用原地算法对数组的元素进行排序,并返回数组。
    冒泡排序:

    arr.sort(function(a,b){
    return a-b;  //升序
    return b-a;  //降序
    
  • arr.push(element1, ..., elementN) 将一个或多个元素添加到数组的末尾,并返回该数组的新长度。

  • arr.pop() 从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。

  • arr.shift() 从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

  • arr.unshift(element1, ..., elementN) 将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。

注意:

  • forEach()方法不会返回执行结果,而是undefinedforEach() 被调用时,不会改变原数组,也就是调用它的数组(尽管 callback 函数在被调用时可能会改变原数组)。
    map()方法会分配内存空间存储新数组并返回,map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。
  • indexOffindIndex 都是查找数组中满足条件的第一个元素的索引。indexOf 中查找值作为第一个参数,采用 === 比较,更多的是用于查找基本类型,如果是对象类型,则是判断是否是同一个对象的引用;而findIndex中比较函数作为第一个参数,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂
  • toStringjoin都可以使元素变成字符串,但是join方法可以指定连接符。

ES6新增的数组方法

  1. Array.from:将类数组和可迭代对象转换为真正的数组,第二个参数可以对每个成员执行一次map
  2. Array.of:将一组值转换为数组
  3. includes(item,[从当前哪个位置开始])
  4. find/findIndex
  5. entires/keys/values 返回迭代器对象iterator,可用for...of...iterator.next().value来获取,不能用iterator[i]获取
    注:iterator.next().value会将元素从iterator取出
  6. for...of 遍历 for(let num of arr)
  7. flat(depth):摊平数组
  8. flatMap:对每个成员执行一个函数然后摊平

参考:MDN文档

力扣题目

1. 两数之和(哈希表求解,将和化为差)
53. 最大子数组和(动态规划?贪心?)

通常我们遍历子串或者子序列有三种遍历方式

  • 以某个节点为开头的所有子序列: 如 [a],[a, b],[ a, b, c] … 再从以 b 为开头的子序列开始遍历 [b] [b, c]。
  • 根据子序列的长度为标杆,如先遍历出子序列长度为 1 的子序列,在遍历出长度为 2 的 等等。
  • 以子序列的结束节点为基准,先遍历出以某个节点为结束的所有子序列,因为每个节点都可能会是子序列的结束节点,因此要遍历下整个序列,如: 以 b 为结束点的所有子序列: [a , b] [b] 以 c 为结束点的所有子序列: [a, b, c] [b, c] [ c ]。

121. 买卖股票的最佳时机(贪心?和53方法类似)
136. 只出现一次的数字(异或位运算)
在这里插入图片描述
15. 三数之和(排序 + 双指针,注意去重!)
169. 多数元素
283. 移动零

2. 字符串

常用API

  • str.length 读取字符串长度
  • str.charAt(index) 从一个字符串中返回指定的字符。如果没有提供索引,charAt() 将使用0。如果指定的 index 值超出了该范围,则返回一个空字符串。和str[index]用法相同,但是当index超出时,str.charAt(index) 返回空字符''str[index]返回undefined
  • str.charCodeAt(index)返回 0 到 65535 之间的整数,表示给定索引处的 UTF-16 代码单元。如果 index 超出范围,charCodeAt() 返回 NaN。
  • str.concat(str2, [, ...strN]) 将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
  • str.indexOf(searchValue [, fromIndex]) 返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。
  • str.substr(start[, length]) 返回一个字符串中从指定位置开始到指定字符数的字符。如果 length 为 0 或负值,则 substr 返回一个空字符串。如果忽略 length,则 substr 提取字符,直到字符串末尾。可能会被废弃,用 substring() 替代
  • str.substring(indexStart[, indexEnd]) 返回一个字符串在开始索引到结束索引之间的一个新字符串, 或从开始索引直到字符串的末尾的一个新字符串。如果索引值为负数或NaN,则被当做0。而且默认以较小的参数作为初始位置
  • str.slice(beginIndex[, endIndex]) 提取某个字符串的一部分,并返回该字符串,且不会改动原字符串。如果索引值为负数,则会被看做字符串长度-索引值。默认以第一个参数作为初始位置。
  • str.split([separator[, limit]]) 使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。limit表示分割成几份 ,满足时停止分割。
  • str.toUpperCase() 将字符串转为大写形式并返回新字符串(如果调用该方法的值不是字符串类型会被强制转换)。
  • str.toLowerCase()将字符串值转为小写形式,并返回新字符串。
  • str.replace(substr, newSubStr) 用来删除(newSubStr")、替换字符串中的一段内容

ES6新增的字符串方法

  1. includes(str,[从当前哪个位置开始])
  2. startWith(str,[开始搜索的位置])
  3. endWith(str,[字符串长度])
  4. repeat(n)
  5. padStart(当前字符串需要填充到的目标长度,[str])str默认为空,可重复
  6. padEnd(当前字符串需要填充到的目标长度,[str])str默认为空,可重复

注意: JavaScript中字符串的值是不可改变的。
参考:MDN文档

力扣题目

3. 无重复字符的最长子串

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值