blog
blog copied to clipboard
Array 对象/ String对象
-
数组浅拷贝:
Array.from(arr, mapFn) //后面可执行一个map回调函数
arr.slice()
+ 字符串、数字和布尔直接复制值,
+ 对象:拷贝对象的引用,则如果被引用的对象发生改变,则型数组和原来数组也发生改变
[].concat(arr)
arr.concat([])
生成特定长度数组
Array(21).fill(0).map((item, index) => item + index * 5)
-
map | filter | reduce 区分:
Array对象:
以下都更改了原数组:
push
增 :返回添加新元素后的数组长度;(不添加则返回原数组长度)
unshift
增 :返回添加新元素后的数组长度;(不添加则返回原数组长度)
pop
删 :返回删除的元素;
shift
删 :返回删除的元素;
reverse
:返回倒叙后的数组;
sort
:返回排序后的数组;
splice
:返回删除的元素;没有返回空([ ]);
array.splice(start, deleteCount, item1, item2, ...)
以下没有更改原数组
toString
:返回变换后的字符串;
join
:以参数作为分隔符,返回变换后的字符串;【通过 call
可以方法可以用于字符串和类似数组的对象】
concat
:+1: :返回添加后的新数组;【通过 call
可以方法可以将对象合并为数组】
slice
:+1: :返回抽取出的新数组;【通过 call
可以方法可以将类似数组的对象转为真正的数组】
map
查 :【通过 call
可以方法可以用于字符串】
forEach
查 :【通过 call
可以方法可以用于字符串】
ES5新增数组扩展(存在兼容问题,IE8以上支持)
Array.isArray(arr)
:判断是否是数组;
- 考虑兼容的写法:
typeof arr //object
arr instanceof Array //ture
indexOf 和 lastIndexOf
查 :+1: :返回所检索对象的位置,如果不存在返回-1;(检索用的===,所以无法检索NAN)
.forEach
var arr=[4,5,6]
arr.forEach(function (a,b,c){
console.log(a,b,c)
})
// 4 0 (3) [4, 5, 6]
// 5 1 (3) [4, 5, 6]
// 6 2 (3) [4, 5, 6]
- 考虑兼容用for循环遍历数组
.every
:遍历数组,每一个都符合条件返回ture,否则返回false
var arr=[3,6,7,-2,-4,9]
var isPositive=arr.every(function(a){
return a>0;
})
//false 有两个不满足a>0
.some
:只要有满足条件的值就返回ture,都不满足返回false(对比 .every
)
.map
:与forEach类似,遍历数组,回调函数返回值根据条件组成一个新数组返回,新数组索引结构和原数组一致;
var arr=[3,5,6]
var toSquare=arr.map(function(a){
return a*a
})
console.log(toSquare)
// [9, 25, 36] 返回每个数的平方
.filter
: 过滤
.reduce
:reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。
有四个参数
var total = [0, 1, 2, 3].reduce(function(sum, value) {
return sum + value; //每一次的return值都是下一次函数执行的返回值,第一次若不给定就是第一个值
}, 0);
total //6
String 对象
length
:返回字符串长度;
charAt
:返回指定位置的字符,从0开始;可以用数组下标代替;
charCodeAt
:返回指定位置字符的Unicode编码;
concat
:+1: :连接两个字符串,返回新字符串,不改变原字符串;
slice
:+1: :抽取字符串;不改变原字符串;'JavaScript'.slice(0, 4) // "Java"
substring
:与slice作用相同;但有一些奇怪规则,不建议用;
substr
:抽取字符串;不改变原字符串;
indexOf 和 lastIndexOf
:+1: :检索字符串位置;返回整数;
trim
:去除两端的空格(),返回新字符串,不改变原字符串;' hello world '.trim() // "hello world"
该方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)。
toUpperCase 和 toLowerCase
:将字符串全部转为大小写,返回新字符串,不改变原字符串;【通过 call
可以方法可以用于布尔值和数组】
localeCompare
:比较两个字符串,返回一个整数负,0,正;(受自然语言的影响);
match
:确定某字符串是否匹配原字符串;返回匹配的第一个字符串;没有匹配返回null;规则可以用正则【返回数组还有index属性和input属性,分别表示匹配字符串开始的位置和原始字符串。】
search
:同match,但返回的是匹配的第一个位置;没有匹配返回-1;规则可以用正则;
replace
:替换字符串;一般匹配1个,除非用正则g;规则可以用正则;
split
:按规则分隔数组,返回数组;规则可以用正则;