01-map()
Array.prototype.map();
语法: arr.map(callback);<br /> 参数: callback(function)<br /> 回调函数参数:<br /> [currentValue]<br /> [index]<br /> 返回值: array 由回调函数的返回值组成<br /> map 主要用于数组中的数据 加工<br /> var arr = [1, 2, 3, 4, 5, 6];<br /> var arr2 = arr.map(function (val) {<br /> return val * 10;<br /> });<br /> 链式调用<br /> 当返回值是数组时 可以在函数结尾处继续调用数组的任意函数
02-reduce()
Array.prototype.reduce()
语法: arr.reduce(callback[,value]);<br /> 参数: callback(function) 回调函数<br /> value(any) 传入回调函数中的数据<br /> 回调参数:<br /> value(any) 当reduce没有传第二个参数时为数组的第一元素 否则为第二个参数<br /> current 数组中的每一个元素<br /> 描述: 用于数据的归并<br /> 返回值: 归并结果<br /> var arr = [1, 2, 3, 4, 5, 6, 7, 8];<br /> arr.reduce(function (prev, next) {<br /> prev 第一个拿到数组中 第一个元素<br /> 后面每一次的回调 prev 都获得上一次回调的返回值<br /> console.log(prev, next);<br /> return 1;<br /> });
03-数组API
Array.prototype.every()
语法: arr.every(callback);<br /> 参数: callback(function) 回调函数<br /> 回调参数:<br /> [currentValue]<br /> [index]<br /> 返回值: boolean<br /> 描述: every 给数组的每一个元素执行一个判断<br /> 如果所有判断结果 都为true 则返回true<br /> 如果有判断结果为false 则返回false
Array.prototype.some()
语法: arr.some(callback)<br /> 参数: callback(function)<br /> 回调参数:<br /> [currentValue]<br /> [index]<br /> 返回值: boolean<br /> 描述: some 给数组的每一个元素执行一个判断<br /> 如果有判断结果 都为true 则返回true<br /> 如果所有判断结果为false 则返回false
Array.prototype.find()
语法: arr.find(callback)<br /> 参数: callback(function)<br /> 回调参数:<br /> [currentValue]<br /> [index]<br /> 返回值: elm 或 undefined<br /> 描述: find 在数组中执行一个判断<br /> 返回第一个符合判断的元素<br /> 没有元素符合判断条件则返回 undefined<br /> find 找到第一个符合条件的元素<br /> filter 找到所有符合条件的元素
Array.prototype.findIndex()
语法: arr.findIndex(callback)<br /> 参数: callback(function)<br /> 回调参数:<br /> [currentValue]<br /> [index]<br /> 返回值: index 或 -1<br /> 描述: 根据布尔条件 在数组中查找元素的索引<br /> 返回第一个符合条件的索引值<br /> 如果没有符合条件的元素 则返回-1
04-数组去重
数据查找
准备好一个新组 在新数组中查找 原数组中的每一个值 如果没有查找到则放入新数组
var arr2 = [];
for (var i = 0; i < arr.length; i++) {
if (arr2.indexOf(arr[i]) < 0) {
arr2.push(arr[i]);
}
}
console.log(arr2);
—————————————————-
var arr3 = [];
arr.forEach(function (el) {
if (arr3.indexOf(el) < 0) arr3.push(el);
});
console.log(arr3);
—————————————————-
var arr4 = arr.reduce(function (o, current) {
if (o.indexOf(current) < 0) o.push(current);
return o;
}, []);
console.log(arr4);
——————————————————
var arr5 = arr.reduce(function (o, current) {
if (o.findIndex(function (el) { return el === current }) < 0) o.push(current);
return o;
}, []);
console.log(arr5);
05-源码重构
Array.prototype.forEach2 = function (callback) {
关键字 this
它表示当前函数调用时所在的对象
this出现在函数中 谁调用这个函数 this 就是谁
for (var i = 0; i < this.length; i++) {
if (i in this) { 判断索引存在 才调用
callback(this[i], i); 调用回调函数时 传入 数组中的元素 和 索引
}
}
}
var arr = [2, 3, 4, , , 5, 6];
arr.forEach2(function (el, i) {
console.log(el, i);
console.log(el 10);
});
———————————————————————————
Array.prototype.filter2 = function (callback) {
var result = []; 需要返回的新数组
for (var i = 0; i < this.length; i++) {
if (i in this) {
if (callback(this[i], i)) { 回调函数结果为true的元素
result.push(this[i]); 存入新数组
}
}
}
return result; 返回数组
}
var arr = [65, 26, 8, 1, 7];
var arr2 = arr.filter2(function (el, i) {
return el % 2;
});
console.log(arr2);
var data = [
{ name: ‘xiaoxue’, age: 20 },
{ name: ‘xiaohua’, age: 18 },
{ name: ‘xiaojing’, age: 17 },
{ name: ‘xiaofang’, age: 16 },
{ name: ‘xiaoli’, age: 31 },
{ name: ‘xiaowang’, age: 25 },
];
var res = data.filter2(function (el) {
return el.age >= 18;
});
console.log(res);
——————————————————
Array.prototype.map2 = function (callback) {
var result = []; 返回的新数组
for (var i = 0; i < this.length; i++) {
if (i in this) {
result.push(callback(this[i], i));
}
}
return result;
}
var arr = [2, 3, 4, 6, 7, 8];
var arr2 = arr.map2(function (el) {
return el 2;
});
console.log(arr2);
06-字符串类型
String 是字符串的基本包装类型
它可以将 基本字符串 包装成 引用类型
字符串的操作有一系列API
这些字符串的API被保存在
String.prototype 字符串的原型
字符串的原型用于保存 字符串的公有属性 和 公有方法
var str = new String(‘abcdefg’);
console.log(str);
var str = ‘abcdefg’;
console.log(str[3]);
console.log(str.length);
字符串类型的 toString 函数 会返回原字符串
07-字符串API
String.prototype.charAt()
语法: str.charAt(index)<br /> 参数: index(number) 索引<br /> 返回值: char 索引所对应的字符<br /> var str = 'abcdefg';<br /> console.log(str.charAt(5));<br /> -----------------------------------
String.prototype.charCodeAt();
语法: str.charCodeAt(index)<br /> 参数: index(number) 索引<br /> 返回值: Unicode(number) 索引对应的字符的Unicode<br /> var str = 'abc';<br /> console.log(str.charCodeAt(1));<br /> var str2 = '今天晚上去喝酒!有很多漂亮的小姑娘。';<br /> var arr = [];<br /> for (var i = 0; i < str2.length; i++) {<br /> arr.push((str2.charCodeAt(i) + 35) / 2);<br /> }<br /> console.log(arr);<br /> ------------------------------------
String.fromCharCode()
语法: String.fromCharCode(unicode);<br /> 参数: unicode(number)<br /> 返回值: string unicode 对应的字符串<br /> var res = arr.map(function (el) {<br /> return String.fromCharCode(el * 2 - 35);<br /> });<br /> console.log(res);<br /> ------------------------------------
String.prototype.concat();
语法: str.concat(value,[...valueN]);<br /> 参数: value(string)<br /> 返回值: string 将原字符串拼接所有参数后的结果<br /> var str = '1';<br /> var test = 'ab';<br /> var str2 = str.concat('abc', '123', test);<br /> console.log(str2);<br /> console.log(str);<br /> -------------------------------------
String.prototype.indexOf();
语法: str.indexOf(searchString[,fromIndex=0]);<br /> 参数: searchString(string) 需要查找的字符串<br /> fromIndex(number) 开始索引 默认0<br /> 返回值: 查找到结果第一个字符的索引 或 -1<br /> var str = 'abcdefgcd';<br /> var index = str.indexOf('cdaaa', 3);<br /> console.log(index);<br /> ---------------------------------------
String.prototype.lastIndexOf();
语法: str.lastIndexOf(searchString[,fromIndex=0]);<br /> 参数: searchString(string) 需要查找的字符串<br /> fromIndex(number) 开始索引 默认0<br /> 返回值: 从后向前查找到结果第一个字符的索引 或 -1<br /> var str = 'abcdefgef';<br /> var index = str.lastIndexOf('ef');<br /> console.log(index);<br /> -----------------------------------------
String.prototype.slice();
语法: str.slice([start,end]);<br /> 参数: start(number) 开始索引<br /> end(number) 结束索引<br /> 返回值: 从start到end包含的字符串片段<br /> 描述: slice用于获取字符串中的子片段 从start到end 包前不包后<br /> 如果没有start和end 表示从开始截取到结尾<br /> 如果没有end表示截取到结尾<br /> 如果参数是负数表示 从后向前计算 -1 表示最后一个 -2表示倒数第二个 以此类推<br /> var str = '123456789';<br /> var str2 = str.slice(2, 7);<br /> console.log(str2);
08-字符串API
String.prototype.split();
语法: str.split(delimiter [,limit]);<br /> 参数: delimiter(string) 分离器<br /> limit(number) 最大长度<br /> 返回值: array 新数组<br /> 描述: split 将字符串使用指定的 分离器进行分离 将分离后的每段内容 组成新数组<br /> split 是 join 的 逆向操作<br /> var str = '1-2-3-4-6';<br /> var arr = str.split('-');<br /> console.log(arr);<br /> var email = 'root@rootbk.cn';<br /> var arr = email.split('@');<br /> console.log(arr);<br /> var str = 'abcdefg';<br /> var arr = str.split(''); 字符串转数组<br /> console.log(arr);<br /> ------------------------------------
String.prototype.substr();
语法: str.substr(start,length);<br /> 参数: start(number) 开始索引<br /> length(number) 长度<br /> 返回值: string 从start开始的指定长度字符串<br /> var str = '123456789';<br /> var str2 = str.substr(2, 5);<br /> console.log(str2);<br /> -------------------------------------<br /> 不要使用
String.prototype.substring();
语法: str.substring(start,end);<br /> 参数: start(number) 开始索引<br /> end(number) 结束索引<br /> 返回值: 从start到end包含的字符串片段<br /> 描述: slice用于获取字符串中的子片段 从start到end 包前不包后<br /> substring 的参数 如果不是数字 或 转数字情况 为 NaN 则默认为0<br /> 当end小于start 则自动交换位置<br /> 当参数小于0 会自动变成0<br /> var str = '123456789';<br /> console.log(str.slice(1, -4));<br /> console.log(str.substring(1, -4));<br /> ----------------------------------------
String.prototype.toLowerCase(); 转小写
String.prototype.toUpperCase(); 转大写
var str = 'ABcdef';<br /> console.log(str.toLowerCase());<br /> console.log(str.toUpperCase());<br /> -----------------------------------------
String.prototype.repeat()
语法: str.repeat(count);<br /> 参数: count(number) 重复次数<br /> 返回值:string<br /> 描述: 重复字符串<br /> var str = 'abc';<br /> var str2 = str.repeat(3);<br /> console.log(str2);<br /> -------------------------------------------
String.prototype.trim()
语法: str.trim()<br /> 返回值: string<br /> 描述: 去除字符串前后空格