blog icon indicating copy to clipboard operation
blog copied to clipboard

Array 对象/ String对象

Open yongheng2016 opened this issue 7 years ago • 0 comments

  • 数组浅拷贝:

Array.from(arr, mapFn)  //后面可执行一个map回调函数
arr.slice()  
+ 字符串、数字和布尔直接复制值,
+ 对象:拷贝对象的引用,则如果被引用的对象发生改变,则型数组和原来数组也发生改变
[].concat(arr)
arr.concat([])

生成特定长度数组

Array(21).fill(0).map((item, index) => item + index * 5)
  • map | filter | reduce 区分:

image


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:按规则分隔数组,返回数组;规则可以用正则

yongheng2016 avatar May 26 '17 04:05 yongheng2016