返回
lodash的toLength和toPairs方法实现和扩展
前端
2024-01-10 04:03:27
前言
本篇章我们将认识lodash里的toLength方法和toPairs方法实现,同时在实现toPairs的过程中学习到_.zipObject的扩展功能。
toLength
toLength方法用于创建一个指定长度的数组。如果提供的长度小于或等于0,则返回一个空数组。如果提供的长度大于数组的长度,则使用undefined填充数组。
const array = [1, 2, 3];
console.log(toLength(array, 5));
// => [1, 2, 3, undefined, undefined]
console.log(toLength(array, 0));
// => []
toLength方法的实现非常简单,如下:
function toLength(array, length) {
if (length <= 0) {
return [];
}
const result = new Array(length);
for (let i = 0; i < array.length; i++) {
result[i] = array[i];
}
return result;
}
toPairs
toPairs方法用于将对象转换为一个由键值对组成的数组。
const object = { a: 1, b: 2, c: 3 };
console.log(toPairs(object));
// => [['a', 1], ['b', 2], ['c', 3]]
toPairs方法的实现如下:
function toPairs(object) {
const result = [];
for (const key in object) {
if (object.hasOwnProperty(key)) {
result.push([key, object[key]]);
}
}
return result;
}
在实现toPairs的过程中,我们学习到了_.zipObject的扩展功能。_.zipObject方法用于将一个由键值对组成的数组转换为一个对象。
const array = [['a', 1], ['b', 2], ['c', 3]];
console.log(_.zipObject(array));
// => { a: 1, b: 2, c: 3 }
扩展
我们可以扩展toPairs方法,使其能够将对象转换为一个由键值对组成的数组,并指定键的顺序。
function toPairsWithOrder(object, keys) {
const result = [];
for (const key of keys) {
if (object.hasOwnProperty(key)) {
result.push([key, object[key]]);
}
}
return result;
}
const object = { a: 1, b: 2, c: 3 };
console.log(toPairsWithOrder(object, ['b', 'c', 'a']));
// => [['b', 2], ['c', 3], ['a', 1]]
结语
toLength和toPairs方法都是非常有用的lodash方法。toLength方法可以用于创建一个指定长度的数组,而toPairs方法可以用于将对象转换为一个由键值对组成的数组。通过扩展toPairs方法,我们还可以使其能够指定键的顺序。