map (Lodash兼容性)
使用Array.prototype.map
此map函数由于处理null或undefined、对象遍历、属性提取等附加功能而运行缓慢。在转换数组时,JavaScript的内置Array.prototype.map方法更快、更简单。
请使用更快、更现代的Array.prototype.map。
转换数组或对象的每个元素以创建一个新数组。
typescript
const mapped = map(collection, iteratee);参考
map(collection, iteratee)
当您想要转换数组、对象或类数组对象的每个元素时使用map。它对每个元素执行迭代函数,并将结果作为新数组返回。
typescript
import { map } from 'es-toolkit/compat';
// 将数组的每个元素加倍
map([1, 2, 3], x => x * 2);
// Returns: [2, 4, 6]
// 转换对象的值
const obj = { a: 1, b: 2 };
map(obj, (value, key) => `${key}:${value}`);
// Returns: ['a:1', 'b:2']
// 提取属性
const users = [
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
];
map(users, 'name');
// Returns: ['John', 'Jane']null或undefined被视为空数组。
typescript
import { map } from 'es-toolkit/compat';
map(null, x => x); // []
map(undefined, x => x); // []通过将属性路径指定为字符串,还可以提取嵌套属性。
typescript
import { map } from 'es-toolkit/compat';
const users = [{ info: { name: 'John' } }, { info: { name: 'Jane' } }];
map(users, 'info.name');
// Returns: ['John', 'Jane']传递对象时,会检查每个元素是否与该对象匹配。
typescript
import { map } from 'es-toolkit/compat';
const users = [
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
];
map(users, { age: 30 });
// Returns: [true, false]参数
collection(T[] | ArrayLike<T> | Record<string, T> | null | undefined): 要遍历的数组或对象。iteratee(function | string | object, 可选): 对每个元素执行的函数、属性路径或要匹配的对象。如果不提供,则按原样返回每个元素。- 当它是函数时,以
(value, key, collection)的形式调用。 - 当它是字符串时,提取该属性。
- 当它是对象时,检查每个元素是否与对象匹配。
- 当它是函数时,以
返回值
(U[]): 返回转换后的值的新数组。

