一、Array.prototype.flat() 和 flatMap()(数组扁平化)
(1)flat(depth)
-
将嵌套数组“拉平”到指定深度(默认
depth=1)。const arr = [1, [2, [3]]]; arr.flat(); // [1, 2, [3]](默认深度 1) arr.flat(2); // [1, 2, 3](深度 2)
(2)flatMap()
-
先对数组每个元素执行映射,再将结果扁平化(深度固定为 1)。
const arr = ["Hello", "World"]; arr.flatMap(str => str.split("")); // ["H", "e", "l", "l", "o", "W", "o", "r", "l", "d"]
适用场景:
-
处理嵌套数组(如 API 返回的多维数据)
-
合并映射和扁平化操作(比
map+flat更高效)
二、Object.fromEntries()(键值对转对象)
-
将键值对列表(如
Map、Array)转换为对象,是Object.entries()的逆操作。const entries = [ ['name', 'Alice'], ['age', 30] ]; const obj = Object.fromEntries(entries); // { name: "Alice", age: 30 }
典型用途:
-
将
URLSearchParams转为对象 -
转换
Map为普通对象const params = new URLSearchParams("name=Alice&age=30"); Object.fromEntries(params); // { name: "Alice", age: "30" }
三、String.prototype.trimStart() 和 trimEnd()
-
分别移除字符串开头或结尾的空格(别名:
trimLeft()/trimRight())。const str = " Hello "; str.trimStart(); // "Hello " str.trimEnd(); // " Hello"
-
对比旧方法:
-
trim():移除两端空格。 -
trimStart()/trimEnd():更精确控制。
四、Optional Catch Binding(可选的 catch 参数)
-
允许省略
catch中的错误参数(如果不需要使用错误对象)。try {JSON.parse("invalid json"); } catch { // 不需要写 catch (error)console.log("解析失败"); }
适用场景:
-
不需要处理具体错误时简化代码。
五、Symbol.prototype.description
-
获取
Symbol的描述字符串(定义时的参数)。const sym = Symbol("自定义描述"); sym.description; // "自定义描述"
用途:
-
调试时快速查看
Symbol的用途。
六、JSON.stringify 改进
-
修复对
\u2028(行分隔符)和\u2029(段落分隔符)的序列化,使其符合 JSON 标准。// 早期版本会将这些字符转义为 \uXXXX,现在直接输出 JSON.stringify("\u2028"); // ""\u2028""
七、Function.prototype.toString() 改进
-
返回函数完整的原始代码(包括注释和空格),而不仅是
"function() { ... }"。function foo() {// 这是一个函数console.log("Hello"); } foo.toString(); // 完整输出: // "function foo() { // // 这是一个函数 // console.log("Hello"); // }"
用途:
-
动态代码分析、代码格式化工具。
八、Array.prototype.sort() 稳定排序
-
规定
sort()必须使用稳定排序算法(相同元素保持原始顺序)。const users = [{ name: "Alice", age: 30 },{ name: "Bob", age: 25 },{ name: "Alice", age: 20 } ]; // 按 name 排序后,相同 name 的 age 顺序不变 users.sort((a, b) => a.name.localeCompare(b.name));
影响:
-
对复杂对象的排序更可靠。
注:如有缺失,请联系作者或在下方评论,我尽量在第一时间补充上去!!!