ES6新增方法
1536 字
8 分钟
ES6新增方法
字符串相关
字符串的includes()
是否包含某些字符
//基本用法 判断的组合console.log('abc'.includes('a')); //trueconsole.log('abc'.includes('ab')); //trueconsole.log('abc'.includes('ac')); //false//第二个参数,表示开始搜索的位置console.log('abc'.includes('a', 1)); //false应用:
let url = 'https://www.imooc.com/course/list';const addURLParam = (url, name, value) => { url += url.includes('?') ? '&' : '?'; url += `${name}= ${value}`; return url;};url = addURLParam(url, 'c', 'fe');console.log(url);padStart()和padEnd()
padStart()和padEnd()` 是 ES2017(ES8)新增的字符串方法,用来补齐字符串长度。
//padStart()语法//targetLength:补齐后的总长度//padString:用什么字符补,默认是空格 " "。str.padStart(targetLength, padString)
//基本语法padStart'5'.padStart(3, '0');//‘005’'123'.padStart(6, '*');//'***123''hello'.padStart(3, '*');//'hello'长度够了,不补
//基本语法padEnd()'5'.padEnd(3, '0');//'500''abc'.padEnd(6, '*');//'abc***'注意情况:
//长度够了,不补'hello'.padStart(3, '*');//'hello'//省略第2参数,默认补空格'hi'.padStart(5);//' hi'//超过的,原字符串不会变,只会截取填充的console.log('abc'.padStart(10, '0123456789'));//0123456abc应用
//时间格式化const h = '9'.padStart(2, '0');const m = '5'.padStart(2, '0');console.log(`${h}:${m}`);
//日期const month = String(date.getMonth() + 1).padStart(2, '0');const day = String(date.getDate()).padStart(2, '0');
//隐藏手机号'1234'.padStart(11, '*');//*******1234
//生成固定宽度字符串'VIP'.padEnd(10, '-');//'VIP-------'trimStart()和trimEnd()
trimStart()和trimEnd() 是 ES2019(ES10)新增的字符串方法,用来删除字符串两端的空白字符中的一端。
trimStart():删除开头的空白字符。
trimEnd():删除结尾的空白字符。
空白字符包括:空格 " ";制表符 \t;换行符 \n;回车符 \r;其他 Unicode 空白字符
const str = ' hello';console.log(str.trimStart());//制表符'\t\thello'.trimStart();//'hello'//换行符'\n\nhello'.trimStart();
const str = 'hello ';console.log(str.trimEnd());//中间的空格不会删除'he llo'.trim();
//trim()两端都删除。' hello '.trim();
//用户输入处理const username = input.value.trim();
//字符串不会被修改const str = ' hello';str.trimStart();const newStr = str.trimStart();console.log(str);console.log(newStr);数组相关
数组的includes()
includes() 是 ES2016(ES7)新增的数组方法,用来判断数组中是否包含某个元素。
返回值:true、false
//searchElement:要查找的元素。//fromIndex:从哪个索引开始查找(可选)arr.includes(searchElement, fromIndex)
//基本使用const arr = [1, 2, 3, 4];console.log(arr.includes(2));console.log(arr.includes(5));//false
//第二个参数 fromIndexconst arr = [1, 2, 3, 2];console.log(arr.includes(2, 2));//true//支持负数索引const arr = [1, 2, 3, 4];console.log(arr.includes(3, -2));//true 往后倒数
//和 indexOf() 的区别(重点)arr.indexOf(2) !== -1arr.includes(2)//更直观
//最大的区别:NaN[1, NaN].indexOf(NaN);//-1找不到。[1, NaN].includes(NaN);//true
//对象比较const obj = { a: 1 };const arr = [obj];console.log(arr.includes(obj));//truearr.includes({ a: 1 });//false 对象比较的是引用地址。Array.from()
Array.from() 是 ES6(ES2015)新增的静态方法,用于将类数组对象(Array-like)或可迭代对象(Iterable)转换为真正的数组
//基本用法console.log(Array.from('str'));//[ 's', 't', 'r' ]
// 2.哪些可以通过Array.from(转换成数组// 2.1.所有可遍历的// 数组、字符串、Set、Map、NodeList、argumentsconsole.log(Array.from(new Set([1, 2, 1])));console.log([...new Set([1, 2, 1])]);//也是转数组更简洁
//2.2拥有length属性的任意对象const obj = { 0: 'a',//只有键值是数字才会转换 1: 'b', 2: 'c', name:'alex'//不转 length: 3//由这个决定数组长度};const arr = Array.from(obj);console.log(arr);
//3.第二个参数//作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组Array.from([1, 2, 3], item => item * 2);//等价于Array.from([1, 2, 3]).map(item => item * 2);//但前者效率更高,因为只遍历一次
//生成指定长度的数组Array.from({ length: 5 }, () => 0);//[0, 0, 0, 0, 0]
//生成数字序列Array.from({ length: 5 }, (_, i) => i);//[0, 1, 2, 3, 4]
//4第三个参数,修改this指向 普通函数才能修改thisconst obj = {};Array.from( '12', function () { console.log(this); }, obj,);//this-》objfind()和findIndex()
find() 和 findIndex() 是 ES6(ES2015)新增的数组方法,用来查找数组中满足条件的第一个元素。
find:返回第一个满足条件的元素本身
findIndex:返回第一个满足条件的元素索引
arr.find(callback)const arr = [5, 12, 8, 130, 44];const res = arr.find(item => item > 10);console.log(res);//12
const f = [1, 5, 7, 8, 9, 3].find((value, index, arr) => { //value 值 index索引 ,arr数组 return value > 8;});console.log(f);//9const f = [1, 5, 7, 8, 9, 3].findIndex((value, index, arr) => { //value 值 index索引 ,arr数组 return value > 8;});console.log(f);//4
//第三个参数,修改this指向 普通函数才能修改thisconst obj = {};const f = [1, 5, 7, 8, 9, 3].findIndex(function (value, index, arr) { console.log(this);}, obj);
//应用//find 查对象const users = [ { id: 1, name: 'A' }, { id: 2, name: 'B' }];const user = users.find(u => u.id === 2);console.log(user);//{ id: 2, name: 'B' }//findIndex 查位置const index = users.findIndex(u => u.id === 2);console.log(index);| 对比 | indexOf() | findIndex() |
|---|---|---|
| 查找类型 | 基本类型 | 任意条件 |
| 是否支持对象 | ❌ | ✅ |
| 是否支持函数判断 | ❌ | ✅ |
| 返回值 | 索引 | 索引 |
对象相关
Object.assign()
Object.assign() 用于把一个或多个源对象的属性“浅拷贝”到目标对象上。
//基本用法,会修改原对象const obj1 = { a: 1 };const obj2 = { b: 2 };const result = Object.assign(obj1, obj2);console.log(result);//{ a: 1, b: 2 }console.log(obj1);//{ a: 1, b: 2 }
//避免污染原对象const result = Object.assign({}, obj1, obj2);
//浅拷贝const obj = { a: 1, b: { c: 2 }};const copy = Object.assign({}, obj);copy.b.c = 999;console.log(obj.b.c);//999
//数组也可以用,因为数组本质也是对象(key 是索引)不常用const arr1 = [1, 2];const arr2 = [3, 4];Object.assign(arr1, arr2);console.log(arr1);//[3, 4]与本意不符
//应用const logUser = (UserOption) => { //默认配置 const DEFAULTS = { name: 'zhangsan', age: 0, }; //合并 const option = Object.assign({}, DEFAULTS, UserOption); console.log(option);};logUser({ name: 'alex' });Object.keys()、Object.values()和Object.entries()
这三个方法是 ES8(ES2017)里非常重要的一组 对象遍历工具,本质都是把对象“转成数组再处理”。
区别:
| 方法 | 返回什么 |
|---|---|
Object.keys() | 键(key)数组 |
Object.values() | 值(value)数组 |
Object.entries() | 键值对数组 |
Object.keys()
返回对象所有“键”的数组
const obj = { name: 'Alice', age: 18};console.log(Object.keys(obj));//['name', 'age']//遍历 keyfor (const key of Object.keys(obj)) { console.log(key, obj[key]);}//判断对象是否为空Object.keys({}).length === 0;Object.values()
返回对象所有“值”的数组
const obj = { name: 'Alice', age: 18};
console.log(Object.values(obj));//['Alice', 18]//遍历值for (const value of Object.values(obj)) { console.log(value);}//判断是否存在某个值Object.values(obj).includes('Alice');Object.entries()
返回“键值对数组”
const obj = { name: 'Alice', age: 18};console.log(Object.entries(obj));//输出[ ['name', 'Alice'], ['age', 18]]
//遍历对象(推荐写法)for (const [key, value] of Object.entries(obj)) { console.log(key, value);}//转 Mapconst map = new Map(Object.entries(obj));//对象转数组处理Object.entries(obj).map(([k, v]) => { console.log(k, v);});文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
ES6类Class
前端工程师本文主要学习ES6类Class
2
ES6异步Promise
前端工程师本文主要学习ES6异步Promise
3
ES6剩余参数
前端工程师2026-10-21
4
ES6箭头函数
前端工程师2026-10-21
5
ES6模板字符
前端工程师2026-10-21
随机文章随机推荐














