js数组对象的⽅法常⽤API
改变原数组的
ES5
1. push() //向数组的末尾添加⼀个或多个元素,返回新数组长度
语法:arr.push(element1[, ...[, elementN]])
2. pop() // ⽤于删除并返回数组的最后⼀个元素 如果数组为空,返回undefined
语法:arr.pop()
3. unshift() //返回新数组长度
4. shift() // 删除并返回数组的第⼀个元素 如果数组为空,返回undefined
语法:arr.shift()
5. sort() // 对数组的元素进⾏排序,返回改变后的数组
语法: arr.sort([compareFunction])
注意:compareFunction 指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个字符的Unicode代码点值进⾏排序。
6. reverse() // ⽤于颠倒数组中元素的顺序,返回改变后的数组
语法:verse()
7. splice() // 向数组中添加/删除/替换项⽬,返回删除的元素,如果仅删除⼀个元素,则返回⼀个元素的数组。如果没有删除任何元
素,则返回⼀个空数组。
语法:array.splice(start[, deleteCount[, item1[, item2[, …]]]])
ES6
1. copyWithin() // 在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。
语法:pyWithin(target[, start[, end]])
2. fill() // 给定值,填充⼀个数组,value代表填充的数值,start是开始的位置,end是结束的位置(不包括)
语法:arr.fill(value[, start[, end]])
返回新对象的
ES5
1. concat() // 连接两个或更多的数组,并返回结果。参数可以是数组或者值
语法:const new_array = at([value1[, value2[, ...[, valueN]]]])
2. join() //把数组的所有元素放⼊⼀个字符串。元素通过指定的分隔符进⾏分隔。参数不填默认逗号分隔
语法:arr.join([separator])
注意:如果元素是undefined,null⼀个空数组[],它被转换为⼀个空字符串。
3. slice()//从某个已有的数组返回选定的元素
语法:arr.slice([begin[, end]]) //包括begin,不包括end
4. toString() // 把数组转换为字符串,并返回结果。数组中的元素之间⽤逗号分隔。
语法:String()
5. toLocaleString() // 把数组转换为本地数组,并返回结果。
语法:LocaleString([locales[, options]])
待扩展
6. Array.isArray(arr) //判断arr是否是⼀个数组类型
当Array.isArray不存在可以⽤String.call(arr) === ‘[object Array]’
7. indexOf() // 返回可以在数组中到给定元素的第⼀个索引;如果不存在,则返回-1
语法:arr.indexOf(searchElement[, fromIndex])
8. lastIndexOf() //返回可以在数组中到给定元素的最后⼀个索引;如果不存在,则返回-1。
语法:arr.lastIndexOf(searchElement[, fromIndex])
ES5 参数是⼀个callback
1. every() // 如果回调函数每个数组元素都为true,返回⼀个true,否则,false。返回⼀个布尔值
语法:arr.every(callback(element[, index[, array]])[, thisArg])
注意:(修改,添加和删除)影响初始数组
2. some() // 数组中的**⾄少⼀个元素为true,**返回true,否则,false,返回⼀个布尔值
语法:arr.some(callback(element[, index[, array]])[, thisArg])
3. filter() // 返回通过测试的元素的新数组,没有通过测试的,返回⼀个空数组。
语法:let newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
4. reduce() // 最终返回⼀个值
语法:duce(callback( accumulator, currentValue[, index[, array]] )[, initialValue])
参数:accumulator:累加器,currentValue:当前值, initialValue:初始值
5. reduceRight() // 从右到左累加 与reduce相反
语法:duceRight(callback(accumulator,currentValue [,index [,array]])[,initialValue])
ES6
1. find() //⽤于出第⼀个符合条件的数组成员
语法:arr.find(callback(element[, index[, array]])[, thisArg])
2. findIndex() 返回第⼀个符合条件的数组成员的位置
语法:arr.findIndex(callback(element[, index[, array]])[, thisArg])
3. includes() // 表⽰某个数组是否包含给定的值,返回⼀个布尔值
语法:arr.includes(valueToFind[, fromIndex])
4. flat() //⽤于将嵌套的数组“拉平”,变成⼀维的数组。
语法:var newArray = arr.flat([depth])
可以将flat()⽅法的参数写成⼀个整数,表⽰想要拉平的层数,默认为1。
如果不管有多少层嵌套,都要转成⼀维数组,可以⽤Infinity关键字作为参数。
5. flatMap() //⽅法对原数组的每个成员执⾏⼀个函数,flatMap()只能展开⼀层数组。
语法:
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]){
// return element for new_array
}[, thisArg])
ES5其他
1. forEach() // 遍历数组,没有返回值,也不会改变原数组,
语法:arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
注意:
forEach()除了抛出异常外,没有其他⽅法可以停⽌或中断循环。如果您需要这种⾏为,该forEach()⽅法是错误的⼯具。
提前终⽌可以通过以下⽅式完成:
⼀个简单的for循环
⼀对…的 / 为…在 循环
Array.prototype.every()
Array.prototype.some()
Array.prototype.find()
Array.prototype.findIndex()
数组⽅法:every(),,some()和find(),并findIndex()使⽤返回真实值的谓词测试数组元素,以确定是否需要进⼀步迭代。
2. map() //遍历数组
语法:
let new_array = arr.map(function callback( currentValue[, index[, array]]){
// return element for new_array
}[, thisArg])
ES6其他
1. 扩展运算符(…)
rest参数的逆运算,将⼀个数组转为逗号分隔的参数序列
// 注意:1、只有函数调⽤时,扩展运算符才可以放在圆括号中,否则会报错 2、替代函数的apply⽅法
// 应⽤:
1. 复制数组
2. 合并数组(…为浅拷贝,concat也是浅拷贝)
3. 与解构赋值结合
// ES5
a = list[0], rest = list.slice(1)
// ES6
js合并两个数组[a,...rest]= list
4. 字符串 : 扩展运算符还可以将字符串转为真正的数组。
[...'hello']
// [ "h", "e", "l", "l", "o" ]
扩展:识别四个字节的Unicode字符
5. 实现了Iterator接⼝的对象
任何定义了遍历器(Iterator)接⼝的对象(参阅 Iterator ⼀章),都可以⽤扩展运算符转为真正的数组。
2. Array.from():⽤于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象,将字符串转为
数组
// Array.from还可以接受第⼆个参数,作⽤类似于数组的map⽅法,⽤来对每个元素进⾏处理,将处理后的值放⼊返回的数组Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);
Array.from([1,2,3],(x)=> x * x)
// [1, 4, 9]
3. Array.of() // ⽤于将⼀组值,转换为数组
语法:Array.of(element0[, element1[, ...[, elementN]]])
4. entries() // ⽤于遍历数组,是对键名的遍历
语法:ies()
5. keys() // ⽤于遍历数组,是对键值的遍历
语法:array.keys()
6. values() // ⽤于遍历数组,是对键值对的遍历
语法:array.values()
数组的空位
ES5
ES5 对空位的处理,已经很不⼀致了,⼤多数情况下会忽略空位。
forEach(), filter(), reduce(), every() 和some()都会跳过空位。
map()会跳过空位,但会保留这个值
join()和toString()会将空位视为undefined,⽽undefined和null会被处理成空字符串。
ES6
Array.from⽅法会将数组的空位,转为undefined
扩展运算符(…)也会将空位转为undefined。
copyWithin()会连空位⼀起拷贝。
fill()会将空位视为正常的数组位置。
for…of循环也会遍历空位。
上⾯代码中,数组arr有两个空位,for…of并没有忽略它们。如果改成map⽅法遍历,空位是会跳过的。
entries()、keys()、values()、find()和findIndex()会将空位处理成undefined。
-如果原数组有空位,flat()⽅法会跳过空位
扩展:关于数组的⼀些⾯试题
1. 复制数组
2. 合并数组
3. 删除数组
4. 数组去重
5. 将字符串转为数组
6. 将类数组转为数组
7. 数组的遍历?有什么区别?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论