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()
方法不会返回执行结果,而是undefined
。forEach()
被调用时,不会改变原数组,也就是调用它的数组(尽管 callback 函数在被调用时可能会改变原数组)。
map()
方法会分配内存空间存储新数组并返回,map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。indexOf
与findIndex
都是查找数组中满足条件的第一个元素的索引。indexOf
中查找值作为第一个参数,采用 === 比较,更多的是用于查找基本类型,如果是对象类型,则是判断是否是同一个对象的引用;而findIndex
中比较函数作为第一个参数,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂toString
和join
都可以使元素变成字符串,但是join
方法可以指定连接符。
ES6新增的数组方法
Array.from
:将类数组和可迭代对象转换为真正的数组,第二个参数可以对每个成员执行一次map
Array.of
:将一组值转换为数组includes(item,[从当前哪个位置开始])
find
/findIndex
entires
/keys
/values
返回迭代器对象iterator,可用for...of...
和iterator.next().value
来获取,不能用iterator[i]
获取
注:iterator.next().value
会将元素从iterator取出for...of
遍历for(let num of arr)
flat(depth)
:摊平数组flatMap
:对每个成员执行一个函数然后摊平
力扣题目
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新增的字符串方法
includes(str,[从当前哪个位置开始])
startWith(str,[开始搜索的位置])
endWith(str,[字符串长度])
repeat(n)
padStart(当前字符串需要填充到的目标长度,[str])
str默认为空,可重复padEnd(当前字符串需要填充到的目标长度,[str])
str默认为空,可重复
注意: JavaScript中字符串的值是不可改变的。
参考:MDN文档