lodash
是一个 JavaScript 实用工具库,提供了许多用于处理数组、对象、字符串等的函数。lodash
中的 _.omit
和 _.pick
函数用于从对象中选择或排除特定的属性。
如果你不想使用 lodash
,可以使用原生 JavaScript 来实现类似的功能。以下是几种替代方法:
Object.keys
和 Array.prototype.reduce
// 排除特定属性
function omit(obj, keysToOmit) {
return Object.keys(obj).reduce((result, key) => {
if (!keysToOmit.includes(key)) {
result[key] = obj[key];
}
return result;
}, {});
}
// 选择特定属性
function pick(obj, keysToPick) {
return Object.keys(obj).reduce((result, key) => {
if (keysToPick.includes(key)) {
result[key] = obj[key];
}
return result;
}, {});
}
// 示例
const obj = { a: 1, b: 2, c: 3 };
const omitted = omit(obj, ['b']); // { a: 1, c: 3 }
const picked = pick(obj, ['a', 'c']); // { a: 1, c: 3 }
Object.entries
和 Array.prototype.filter
// 排除特定属性
function omit(obj, keysToOmit) {
return Object.entries(obj)
.filter(([key]) => !keysToOmit.includes(key))
.reduce((result, [key, value]) => {
result[key] = value;
return result;
}, {});
}
// 选择特定属性
function pick(obj, keysToPick) {
return Object.entries(obj)
.filter(([key]) => keysToPick.includes(key))
.reduce((result, [key, value]) => {
result[key] = value;
return result;
}, {});
}
// 示例
const obj = { a: 1, b: 2, c: 3 };
const omitted = omit(obj, ['b']); // { a: 1, c: 3 }
const picked = pick(obj, ['a', 'c']); // { a: 1, c: 3 }
lodash
更快,因为不需要调用外部库函数。这些替代方法适用于任何需要从对象中选择或排除特定属性的场景。例如:
如果处理大量数据时性能不佳,可以考虑使用更高效的算法或数据结构。例如,使用 Map
而不是普通对象来提高查找速度。
确保代码在不同浏览器和环境中都能正常运行。可以使用 babel
等工具进行转译,以确保兼容性。
通过这些方法,你可以有效地替代 lodash
中的 _.omit
和 _.pick
函数,同时保持代码的简洁和高效。
领取专属 10元无门槛券
手把手带您无忧上云