从JavaScript数组的开头或结尾获取N个元素
在使用数组时,一个非常常见的场景是从数组的开头或结尾获取一部分元素。根据使用情况和期望的结果,有几种变体的操作可能适合您的需求。
获取数组的前N个元素
首先简单起见,您可能想要获取数组的前N个元素。使用Array.prototype.slice()
,您可以通过将0
作为起始索引和n
作为结束索引来轻松实现这一点。
const take = (arr, n = 1) => arr.slice(0, n);
take([1, 2, 3], 0); // []
take([1, 2, 3], 2); // [1, 2]
take([1, 2, 3], 5); // [1, 2, 3]
从这些示例中可以看出,Array.prototype.slice()
足够灵活,可以处理远远超出数组长度的n
值。这意味着如果Array.prototype.length
的值小于或等于n
,则将检索数组中的所有元素。
负值有点奇怪,因为您最终会获取从0
到倒数第n
个元素之间的所有值。如果您想避免这种行为,可以简单地添加一些代码来验证n
是否大于或等于0
,否则抛出错误。
获取数组的后N个元素
获取数组的后N个元素非常类似。只需将负索引传递给Array.prototype.slice()
即可实现这一点。
const takeRight = (arr, n = 1) => {
if (n < 0) {
throw new Error('Invalid value for n');
}
return n === 0 ? [] : arr.slice(-n);
};
takeRight([1, 2, 3], 2); // [2, 3]
takeRight([1, 2, 3], 0); // []
takeRight([1, 2, 3], 5); // [1, 2, 3]
takeRight([1, 2, 3], -1); // Error: Invalid value for n