let arr = [‘javascript‘, ‘css‘];
alert( arr.push(‘html‘) );// 3
alert( arr );// javascript, css, html
let arr = [‘javascript‘, ‘css‘];
alert( arr.pop() );// css
alert( arr );// javascript
let arr = [‘is‘, ‘head‘];
alert( arr.unshift(‘here‘) );// 3
alert( arr );// here, is, head
let arr = [‘here‘, ‘is‘, ‘head‘];
alert( arr.shift() );// here
alert( arr );// is, head
arr.splice(start[, deleteCount, elem1, ..., elemN])
start
为开始此次操作的索引值,deleteCount
为删除的个数,elem
为替换或添加的元素,例:let arr = ["hello", "world", "web", "html"]
alert( arr.splice(1, 2, "javascript","css") );//hello,javascript,css,html
//从索引1开始删除2个元素,并将"javascript" "css" 替换至原来的位置
splice
方法返回的是一个包含了被删除元素的数组,而非删除了元素后的新数组start
到索引end
创建一个新数组(包含索引start
,但不包含索引end
)arr.slice([start], [end])
let arr = [‘h‘, ‘t‘, ‘m‘, ‘l‘];
alert( arr.slice( 1, 3) );// t,m
alert( arr.slice(-4,-1) );// h,t,m
alert( arr.slice(1) );// t,m,l
alert( arr.slice() );// h,t,m,l ;相当于生成一个数组的副本
let arr = [1, 2];
alert( arr.concat(3, 4) );//1,2,3,4
alert( arr.concat([3, 4], [5, 6], 7, 8) );//1,2,3,4,5,6,7,8
alert( arr );//1,2
let arr = [1, 2];
let obj = {
0: "html",
1: "css"
};
alert( arr.concat(obj) );//1,2,[object Object]
Symbol.isConcatSpreadable
属性来解决此问题:let arr = [1, 2];
let obj = {
0: "html",
1: "css",
[Symbol.isConcatSpreadable]: true
};
alert( arr.concat(obj) );//1,2,html,css
from
开始搜索 item
,如果找到则返回索引,否则返回 -1
from
开始搜索 item
,如果找到则返回 true
,否则返回false
let arr = [1, 0, false];
alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1
alert( arr.includes(1) ); // true
item
时不会对item进行类型转换;若是想知道数组是否含有某元素且不清楚其索引值时,应优先使用includes
callback
函数的第一个元素的值,否则返回undefined
callback
最多接收三个参数(item
, index
, array
),若callback
中返回true
则停止迭代并返回item
,否则没有搜索到,返回undefined
arr.find(callback[, thisArg])
let users = [
{id: 1001, name: "Mike"},
{id: 1002, name: "Pete"},
{id: 1003, name: "Mary"}
];
let user = users.find(item => item.name == "Mary");
alert(user.id); // 1003
find()
基本相同,区别在于findIndex()
返回的是索引值,搜索不到时返回-1
过滤数组,用法与find()
一样,但返回的是所有符合条件的元素组成的数组
let users = [
{id: 1001, name: "Mike"},
{id: 1002, name: "Pete"},
{id: 1003, name: "Jack"},
{id: 1004, name: "Mary"}
];
let user = users.filter(item => item.id > 1001);
alert( user.length ); //3
user.forEach( item => alert(item.name) );// Pete, Jack, Mary
let arr = [‘hello‘, ‘javascript‘];
arr.forEach(alert);//为每个元素调用alert
let arr = [‘hello‘, ‘javascript‘];
arr.forEach((item, index, array) => {
alert(`${item}是${array}中索引为${index}的值`);
});
forEach()
)let arr = [‘hello‘, ‘javascript‘];
let length = arr.map( item => item.length );//将元素本身转换为元素的长度
alert( arr );//hello, javascript
alert( length );//5, 10
sort(fn)
可为一个数组进行原位排序(直接修改原数组本身),fn
排序函数提供排序的依据
fn(a, b)
提供排序标准的原理:
fn(a, b)
小于 0 ,那么 a 会被排列到 b 之前fn(a, b)
等于 0 , a 和 b 的相对位置不变fn(a, b)
大于 0 , b 会被排列到 a 之前sort( (a, b) => a - b )
(升序) 、 sort( (a, b) => b - a )
(降序):
let arr = [ 18, 2, 13 ];
arr.sort( (a, b) => a - b );
alert(arr); // 升序;2, 13, 18
arr.sort( (a, b) => b - a );
alert(arr); // 降序;18, 13, 2
若要准确排序字母较多的单词,fn
排序函数应配合str.localeCompare()
方法:
let arr = ["javascript", "css", "html", "?sterreich"];
arr.sort( (a, b) => a.localeCompare(b) );
alert( arr );// css, html, javascript, ?sterreich
反转数组,颠倒数组中的元素
let arr = [1, 2, 3];
alert( arr.reverse() );//3, 2, 1
str.split(separator)
可将字符串按指定条件分割成一个数组后返回
separator
(分隔符)可以是字符串、正则表达式、数组等let str = "This , is javascript";
//无分隔符,返回一个由整个字符串作为元素的数组
alert( str.split() );// This , is javascript
//分隔符为空串,遇字符分割,返回一个由每个字符作为元素的字母数组
alert( str.split(‘‘) );// T,h,i,s, ,,, ,i,s, ,j,a,v,a,s,c,r,i,p,t
//分隔符为空格,遇空格分割,返回一个由多个字符串作为元素的数组
alert( str.split(‘ ‘) );// This,,,is,javascript
//分隔符为逗号,遇逗号分割,返回一个由多个字符串作为元素的数组
alert( str.split(‘,‘) );// This , is javascript
arr.join(separator)
与split()
相反,将数组里的元素用separator
连接成一个字符串后返回
let arr = [‘This‘, ‘is‘, ‘javascript‘];
//无分隔符,元素之间以","分隔
alert( arr.join() );// This,is,javascript
//分隔符为空串,元素之间无任何字符分隔
alert( arr.join(‘‘) );// Thisisjavascript
//分隔符为空格,元素之间以空格分隔
alert( arr.join(‘ ‘) );// This is javascript
//分隔符为‘-‘,元素之间以“-”分隔
alert( arr.join(‘-‘) );// This-is-javascript
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
对数组中每个元素执行一个callback
函数,并将其结果汇总为单个返回值
callback
接收4个参数:
acc
(累计器,是上次回调中返回的累积值,或initialValue
)cur
(正在处理的数组元素)index
(正在处理的数组元素的索引,若有initialValue
,则为0,否则从1开始)array
(调用reduce()
的数组)initialValue
(作为callback
中第一个参数的值,若无则使用数组中第一个元素的值)
let arr = [1, 2, 3, 4, 5, 6];
let addAll = arr.reduce( (sum, current) => (sum + current), 0);// 1+2+3+..+6
alert( addAll );// 21
reduceRight()
与reduce()
功能一样,只是从右向左遍历
注:应始终设置initialValue,否则当调用的数组为空数组时会报错
原文:https://www.cnblogs.com/hJ777/p/14762779.html