JS - Array 🗻
1. Object.assign()
Object.assign()
方法用于将一个或多个源对象的可枚举属性复制到目标对象。它返回目标对象。
语法:
Object.assign(target, ...sources)
- 参数:
target
: 目标对象,接收属性的对象。...sources
: 一个或多个源对象,从中复制属性。
示例:
const target = { a: 1 };
const source = { b: 2, c: 3 };
Object.assign(target, source);
console.log(target); // { a: 1, b: 2, c: 3 }
- 如果目标对象和源对象有相同的属性,后面的源对象的属性会覆盖前面的属性。
2. Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,每个键值对都是一个包含两个元素的数组。
语法:
Object.entries(obj)
- 参数:
obj
: 要提取键值对的对象。
示例:
const obj = { name: "Alice", age: 25 };
const entries = Object.entries(obj);
console.log(entries); // [['name', 'Alice'], ['age', 25]]
- 此方法适合用于需要遍历对象属性的场景,返回的数组顺序与
for...in
循环相同,但不包括原型链上的属性。
3. Object.fromEntries()
Object.fromEntries()
方法将一个键值对列表转换为一个新对象。它通常用于将 Object.entries()
返回的数组转换回对象。
语法:
Object.fromEntries(iterable)
- 参数:
iterable
: 一个可迭代的对象(如数组或 Map),其中每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。
示例:
const entries = [['name', 'Alice'], ['age', 25]];
const obj = Object.fromEntries(entries);
console.log(obj); // { name: 'Alice', age: 25 }
- 此方法可以用于将数据从数组形式转换为对象形式,便于后续操作。
4. Math.sqrt()
Math.sqrt()
方法返回非负数的平方根。如果传入负数,则返回 NaN
(不是一个数字)。
语法:
Math.sqrt(x)
- 参数:
x
: 要计算平方根的数字。
示例:
console.log(Math.sqrt(9)); // 3
console.log(Math.sqrt(-1)); // NaN
- 常用于数学计算和几何问题中。
5. Math.abs()
Math.abs()
方法返回一个数的绝对值,即去掉其符号后的值。
语法:
Math.abs(x)
- 参数:
x
: 要计算绝对值的数字。
示例:
console.log(Math.abs(-5)); // 5
console.log(Math.abs(5)); // 5
- 此方法适合用于需要处理正负数但只关心大小的场景。
******************** ARRAY ********************
数组过滤
描述: 使用 filter
方法从数组中提取符合特定条件的元素
案例:
const scoresList = [85, 92, 73, 98, 80];
const highScores = scoresList.filter(score => score > 75);
// highScores 将是 [85, 92, 98, 80]
使用场景: 当需要从数组中移除不符合条件的元素时,使用 filter
可以保持数据整洁
数组映射
描述: 使用 map
方法将数组中的每个元素转换为新的值
案例:
const sideLengths = [2, 3, 4];
const volumes = sideLengths.map(length => length ** 3);
// volumes 将是 [8, 27, 64]
使用场景: 当需要对数组中的每个元素进行数学运算或转换时,使用 map
是非常方便的
嵌套数组扁平化
描述: 使用 flat
方法将嵌套数组展平为一维数组。在这个例子中,我们将包含多层嵌套的水果列表展平
案例:
const fruitBaskets = [
["Bananas", ["Ripe", "Green"]],
["Oranges", ["Navel", "Blood"]]
];
const flatFruits = fruitBaskets.flat();
// flatFruits 将是 ["Bananas", "Ripe", "Green", "Oranges", "Navel", "Blood"]
使用场景: 当处理嵌套结构的数据时,展平可以简化后续的数据操作
去重集合
描述: 使用 Set
来移除数组中的重复元素。通过将原始数组转换为 Set
,再转换回数组,可以确保每个元素都是唯一的
案例:
const participants = ["David", "Emma", "Frank", "David"];
const uniqueParticipants = [...new Set(participants)];
// uniqueParticipants 将是 ["David", "Emma", "Frank"]
使用场景: 数据清理时,确保没有重复项非常重要,特别是在处理用户列表或其他重要数据时
简化条件赋值
描述: 使用三元运算符来简化条件判断
案例:
const temperature = 30;
const weatherMessage = temperature > 25 ? "It's warm!" : "It's cold.";
console.log(weatherMessage); // 输出:It's warm!
使用场景: 当需要根据简单条件执行赋值操作时,三元运算符可以提高代码的简洁性
字符串反转
描述: 一行代码可以反转字符串。通过将字符串拆分为字符数组、反转顺序并重新连接成字符串来实现
案例:
const greeting = "Goodbye!";
const reversedGreeting = greeting.split('').reverse().join('');
// reversedGreeting 将是 "!eybdooG"
使用场景: 字符串操作任务,如反转字符串或提取子字符串,可以通过简洁的一行代码完成
属性存在性检查
描述: 使用 in
运算符检查对象中是否存在特定属性。这可以帮助验证数据的完整性
案例:
const userProfile = { name: "Bob", age: 25 };
const hasAddress = "address" in userProfile; // hasAddress 将是 false
使用场景: 在处理用户配置文件或其他对象时,检查属性是否存在是一项常见需求
默认参数设置
描述: 在函数定义时为参数提供默认值,以便在未提供参数时使用备用值
案例:
const welcomeUser = (username = "Visitor") => `Welcome, ${username}!`;
console.log(welcomeUser()); // 输出:Welcome, Visitor!
console.log(welcomeUser("Alice")); // 输出:Welcome, Alice!
使用场景: 提供默认参数可以提高函数的健壮性,避免因缺少参数而导致错误
数组内容清理
描述: 使用 filter
方法结合 Boolean
构造函数来移除数组中的假值(如 null、undefined、0 等)
案例:
const mixedValues = [2, null, undefined, "", false, 5];
const truthyValues = mixedValues.filter(Boolean); // truthyValues 将是 [2, 5]
使用场景: 清理包含无效数据的数组,以确保后续处理的数据是有效的
动态键名生成
描述: 使用计算属性名动态创建对象键。可以根据变量或表达式来生成键名
案例:
const dynamicKey = "age";
const personInfo = { [dynamicKey]: 28 };
// personInfo 将是 {age: 28}
使用场景: 动态对象键在构建结构未预先设定的对象时非常有用,例如在处理动态表单数据时