JavaScript对象数组常用方法总结
JavaScript对象数组常用方法总结
dleeipop
数组尾部删除
1 | const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉'] |
push
数组尾部添加
1 | const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉'] |
unshift
数组头部添加
1 | const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉'] |
shift
数组头部删除
1 | const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉'] |
forEach
语法:forEach
(item,index)
参数一: 当前循环的元素
参数二: 当前循环的索引
forEach()
方法对数组的每个元素执行一次提供的函数(回调函数)
- 函数没有返回值,即
underfined
; - 不对原数组产生影响。
1 | const str = ['rongxing', 'aniu', 'zhangsan', 'lisi'] |
sort
排序
正序排列
1 | const num = [15, 51, 53, 45, 24, 13] |
1 | const sortNum = num.sort((a, b) => { |
splice
删除数组任意位置元素
splice
(删除元素对应位置的索引,删除的个数[不填默认从头部开始删除],新增的元素)
返回值:删除的元素数组
1 | const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉'] |
map
map
(回调函数(item,index) { })
map
的返回值是一个新数组- 新数组中的元素, 由回调函数的返回值决定, 返回的元素就会加入到新数组中
1 | const arr = ['red', 'blue', 'green', 'purple'] |
join
join()
方法将数组中的所有元素连接成一个字符串
join(‘ ’)
分隔符手动指定,若不需要则留空
1.把数组转换为字符串
2.默认以 ,
作为分隔符拼接成字符串
filter
返回一个新数组, 里面存储着所有符合条件的元素
特点同 map / forEach, 都会遍历数组中每一个元素
传入的回调函数中, 返回值(布尔值)表示当前遍历的元素是否符合条件
其实这个方法就是一个过滤方法,前面那个 every 方法,只判断不过滤,filter 会过滤掉一些不符合条件的,并返回新数组。
- 返回一个满足过滤条件的新数组;
- 不会改变原数组。
1 | const arr = [10, 20, 30, 40] |
every
检测元素是否满足条件, 返回布尔型.所有数组元素都满足条件则返回 true
, 只要有一个不满足条件就返回 false
arr.every(callback)
会对每一个元素都执行 callback 方法,直到 callback 返回 false。有时候 every 方法会和 forEach
方法相比较,因为 forEach
无法停止,而 every
方法返回 flase 时可以中途停止。
- 若全部通过测试,函数返回值 true,中途退出,返回 false;
- 不对原数组产生影响。
1 | const arr = [10, 20, 30] |
some
只要有 1 个数组元素满足条件则返回 true
, 都不满足则返回 false
1 | const arr = [10, 20, 30] |
find
find
查找满足条件的元素, 返回第一个满足条件的元素, 找不到则返回undefined
1 | const goods = [ |
findIndex
findIndex
查找满足条件的元素的索引号, 找不到则返回-1
该方法用法和 find
完全一样, 区别是 find 返回元素, 而 findIndex
返回索引
1 | const goods = [ |
concat
数组合并
concat
方法将创建一个新数组,然后将调用它的对象(this 指向的对象,即原数组)中的元素以及所有参数中的数组类型的参数中的元素以及非数组类型的参数本身按照顺序放入这个新数组,并返回该数组。concat 方法并不修改原数组和参数数组,而且对非数组对象同样有效果。
- 返回拼接的新数组;
- 不修改原数组和参数数组;
- 参数可以是非数组。
1 | arr1 = [10,2,30,54,12] |
fill
填充数组
fill()
方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。返回修改后的原始数组,不创建新数组。
使用语法:fill( value ,start ,end)
,其中 :
value
用来填充数组元素的值,必填。
start
可选起始索引,默认值为0。
end
可选终止索引,默认值为 this.length
。
1 | // 当传入单个参数的时候,该方法会用该参数的值填充整个数组 |
reverse
数组翻转
这样同样也可以实现数组的倒序排列
1 | const num = [1,2,3,4,5] |
reduce
数组求和
reduce
是一个合并的过程,从左到右,直到把所有元素合并到一起,并返回最终的结果。它接受两个参数,第一个参数是一个回掉函数,第二个参数是一个初始值,表示处理第一个元素时的前一个值。这个回掉函数接受四个参数,依次是 accumulator
(上次处理的结果),currentValue
(当前元素的值),index
(当前元素索引),array
(调用 reduce
的数组)。
1 | const arr = [1, 2, 3, 6] |
Array.from
转换为真数组
1 | <body> |
slice
slice()
方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
slice 的参数包括拷贝的初识位置,结束位置(左闭右开),与 splice 有区别。由于不会改变原数组,这个数组可以用于前拷贝,比如经常看别人使用:arr.slice(0)
,表示拷贝数组。
- 返回浅拷贝后的新数组;
- 不会改变原数组。
1 | let a1 = [1, 2, 3, 4, 5]; |
assign
Object.assign(target, sources)
target
:目标对象,即要将属性复制到的对象。sources
:一个或多个源对象,即要从中复制属性的对象。可以传递多个源对象,按顺序依次复制属性到目标对象中。
返回目标对象,也就是复制属性后的目标对象
如果多个源对象具有相同的属性名,后面的属性会覆盖前面的属性。这意味着在复制过程中,如果有冲突的属性名,后面的源对象的属性值会覆盖之前的源对象属性值。
1 | // 源对象 |
字符串方法
split
字符串拆分成数组
将字符串翻转过来,字符串不支持reverse()方法,只能支持数组的翻转,如果想要实现字符串的翻转则需要使用一些小手段,把字符串拆分成数组
1 | const str = '键盘敲烂 月薪过万' |
trim
去除字符串首尾空格
1 | const str = ' 蓝翔高级技工学校 ' |
startsWith
检测是否以某个字符开头, 返回布尔值
startsWith(检测字符, [检测位置])
1 |
|
endsWith
endsWith
(检测字符, [字符串长度])
检测是否以某个字符结尾, 返回布尔值
1 | console.log(str.endsWith('万')) // true |
includes
includes
(搜索的字符, [检测位置])
includes() 方法用来判断当前数组是否包含某指定的值,如果是,则返回 true,否则返回 false。
该函数接受两个参数,第二个参数表示开始查找位置,起始位置为 0。这个方法与 indexOf 方法最大的区别不仅在于返回值一个是索引,一个是布尔值,indexOf 方法使用的是 ===
来判断,无法判断 NaN 情况,而 includes 可以判断。
- 返回 true 或 false;
- 不会改变原数组。
1 | const str1 = "To be, or not to be, that is the question." |
keys
数组的 keys()
方法返回一个数组索引的迭代器。
这个方法会返回一个数组索引的迭代器,迭代器在 ES6 中有特殊的用途。
- 函数返回一个迭代器对象;
- 不会改变原数组。
1 | let user = { |
1 | Object.keys(user) = ["name", "age"] |
values
返回一个包含该对象所有的值的数组。
1 | Object.values(user) = ["John", 30] |
entries
返回一个包含该对象所有 [key, value] 键值对的数组。
1 | Object.entries(user) = [ ["name","John"], ["age",30] ] |