视频加载失败

ES6新增方法

1536 字
8 分钟
ES6新增方法

字符串相关#

字符串的includes()#

是否包含某些字符

//基本用法 判断的组合
console.log('abc'.includes('a')); //true
console.log('abc'.includes('ab')); //true
console.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
//第二个参数 fromIndex
const 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) !== -1
arr.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));//true
arr.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、arguments
console.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指向 普通函数才能修改this
const obj = {};
Array.from(
'12',
function () {
console.log(this);
},
obj,
);//this-》obj

find()和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);//9
const f = [1, 5, 7, 8, 9, 3].findIndex((value, index, arr) => {
//value 值 index索引 ,arr数组
return value > 8;
});
console.log(f);//4
//第三个参数,修改this指向 普通函数才能修改this
const 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']
//遍历 key
for (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);
}
//转 Map
const map = new Map(Object.entries(obj));
//对象转数组处理
Object.entries(obj).map(([k, v]) => {
console.log(k, v);
});

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

ES6新增方法
https://f.youzi177.cn/posts/20261021010es6-xin-zeng-fang-fa/
作者
小封鸭
发布于
2026-10-21
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
小封鸭
小楼一夜听春雨,深巷明朝卖杏花
公告
欢迎来到我的博客。这里主要记录前端全栈和日常内容
分类
标签
最新动态
站点统计
文章
60
分类
3
标签
12
总字数
107,734
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录